2017-07-10 48 views
0

我有一個長度測量的數據框爲多年的兩種魚類。的dput此輸出可以在這裏geom_histogram使用比例而不是計數

https://drive.google.com/file/d/0BzArRBVtzxttdUtaZWVoNUwzTFU/view?usp=sharing

編輯

的鏈接進行訪問。由於下面訪問數據的問題,我已經添加了另一個鏈接csv文件。希望這可以解決問題

https://drive.google.com/open?id=0BzArRBVtzxttZ2RlcDNKdUFERk0

編輯完

我已經那麼會爲每個品種和年份長的頻率直方圖。如果數據被讀入作爲fish_data然後將以下代碼將是可重複的

library(dplyr) library(ggglot2) library(scales)

colour_data <- filter(fish_data, Length >= 50 & Length <= 100)

ggplot(fish_data, aes(x = Length)) + geom_histogram(breaks = seq(0, 700, by = 50), colour = "black") + geom_histogram(data = colour_data, breaks = seq(0, 700, by = 50), fill = "red") + scale_x_continuous(breaks = pretty_breaks(n=15)) + facet_grid(Year~Species) + theme_grey() + labs(y = "Frequency caught\n", x = "\nLength (cm)") + theme(axis.text.x = element_text(angle = 45, hjust = 1))

但是我現在需要顯示y軸作爲比例,而不是總計數。因此,例如,每個小平面的每個50cm容器的高度應該被繪製爲魚總數的比例。每個方面的總數然後加起來爲100.

我在想概念化如何做這個新圖時遇到了麻煩。我想我需要操縱原始數據框,但我不確定這看起來如何。

+0

我的機器是不能讓您的數據,所以我無法測試。但嘗試下面的代碼:'geom_histogram(aes(y = .. count ../ sum(.. count ..)))' – AK88

+0

Cheers。我將這段代碼添加到'geom_histogram'調用中。然而,由此產生的情節似乎沒有道理。每個方面不加上100 –

回答

0

讓我知道這是你想要什麼:

library(dplyr) 
library(ggplot2) 
library(scales) 

fish_data = read.csv("fish_data.csv", header = T) 


ggplot(fish_data, aes(x = Length)) + 
    geom_histogram(aes(y=..count../sum(..count..) * 100, fill = Length >= 50 & Length <= 100), 
       breaks = seq(0, 700, by = 50)) + 
    scale_fill_manual(values = c('grey50', 'red'), guide = FALSE) + 
    scale_x_continuous(breaks = pretty_breaks(n=15)) + 
    facet_grid(Year~Species) + 
    theme_grey() + 
    labs(y = "Frequency caught\n", x = "\nLength (cm)") + 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

enter image description here

+0

我對上述情節的問題是,一些方面似乎不會增加到100.也就是說,大多數左手邊的。或者我只是想念一些東西? –

+0

當你說'每個方面的總數會加起來達到100'時,你的意思是'Fish1'和'Fish2'或'Fish1-2009','Fish2-2009','Fish1-2010', Fish2-2010'等等? – AK88

+0

更精細的刻面。所以'Fish1-2009','Fish2-2009'等等。 –

相關問題