2016-10-03 246 views
0

我有兩個數據框:dataf1,dataf2。它們具有相同的結構和列。 3列名稱是A,B,C。他們都有50行。 我想繪製dataf1和dataf2上B列的直方圖。我可以分別繪製兩個直方圖,但它們的大小不一樣。我想知道如何將它們放在使用不同顏色的相同直方圖上,或繪製兩個相同比例的直方圖?如何在同一個座標軸上繪製兩個直方圖?

ggplot() + aes(dataf1$B)+ geom_histogram(binwidth=1, colour="black",fill="white") 
ggplot() + aes(dataf2$B)+ geom_histogram(binwidth=1, colour="black", fill="white") 
+2

不要使用'$''的AES()內'!另外,請將代碼編輯成您的問題(格式化!),難以閱讀評論。 – Gregor

+0

嘿,你有什麼樣的數據嗎?也許前幾行數據f1和數據f2? –

+0

從理論上講,您所要做的就是將兩個數據框連接在一起併爲f1/f2添加一列 - 然後通過將該列設置爲該列的顏色來對該列進行分組 - 這將在相同的圖 –

回答

1

正如哲源所說,你只需要設定每個陰謀的y限制,讓他們在相同的規模。使用ggplot2,一種方法是使用lims命令(雖然scale_y_continuouscoord_cartesian也可以工作,儘管稍有不同)。你也應該從來沒有使用data$column indside aes()。相反,對aes()內的數據框和未列舉的列名使用data參數。這裏有一些內置數據的例子。

p1 = ggplot(mtcars, aes(x = mpg)) + geom_histogram() + lims(y = c(0, 13)) 
p2 = ggplot(iris, aes(x = Sepal.Length)) + geom_histogram() + lims(y = c(0, 13)) 

gridExtra::grid.arrange(p1, p2, nrow = 1) 

enter image description here

兩個坐上同積兩個柱狀圖,最好的辦法是將數據幀相結合。一種猜測,沒有看到你的數據是這樣的:

dataf = rbind(dataf1["B"], dataf2["B"]) 
dafaf$source = c(rep("f1", nrow(dataf1)), rep("f2", nrow(dataf2)) 

ggplot(dataf, aes(x = B, fill = source)) + 
    geom_histogram(position = "identity", alpha = 0.7) 
1

結合您的數據到一個單一的數據幀與新列標誌着該數據幀中的數據最初來自。然後使用這個新的專欄爲您的情節填充審美。

data1$source="Data 1" 
data2$source="Data 2" 

dat_combined = rbind(data1, data2) 

您沒有提供樣本數據,所以這裏有可能的地塊的幾個例子,使用內置iris數據幀。在下面的圖中,dat類似於dat_combined,Petal.Width類似於B,而Species類似於source

dat = subset(iris, Species != "setosa") # We want just two species 

ggplot(dat, aes(Petal.Width, fill=Species)) + 
    geom_histogram(position="identity", colour="grey40", alpha=0.5, binwidth=0.1) 

ggplot(dat, aes(Petal.Width, fill=Species)) + 
    geom_histogram(position="dodge", binwidth=0.1) 

ggplot(dat, aes(Petal.Width, fill=Species)) + 
    geom_histogram(position="identity", colour="grey40", binwidth=0.1) + 
    facet_grid(Species ~ .) 

enter image description here

相關問題