2011-10-22 69 views
1

我想繪製用於2個因子水平的可變顏色編碼的頻率,例如藍色條應該是A級的直方圖,而綠色的直方圖B級都是同一個圖嗎?這是可能的與hist命令? hist的幫助不允許有一個因素。有沒有其他方法?在R中的同一圖中繪製2個因子的值的頻率圖

我設法barplots手動做到這一點,但我要問,如果有一個更自動化的方法

enter image description here

非常感謝 EC

PS。我不需要密度圖

回答

1

萬一別人還沒有回答,這是一種方式,滿足。最近我不得不處理堆疊直方圖,以下是我所做的:

data_sub <- subset(data, data$V1 == "Yes") #only samples that have V1 as "yes" in my dataset #are added to the subset 

hist(data$HL) 
hist(data_sub$HL, col="red", add=T) 

希望這是您的意思?

+0

謝謝。而已。是否有可能在彼此旁邊繪製酒吧? – ECII

+0

在同一張圖上,你的意思是?我確信有,但我不知道如何(對我自己來說是新的)。 – Atticus29

+0

是的,在同一張圖上,並排 – ECII

0

我不認爲你可以用條柱直方圖很容易地做到這一點,因爲你必須從兩個因子水平「交錯」條塊......它需要某種「離散化」的現在連續的X軸(即它將不得不被分成「類別」和在每個類別中你將有2個條,對於每個因子水平...

但它是相當容易,沒有問題,如果你是就好密謀密度線功能:

y <- rnorm(1000, 0, 1) 
x <- rnorm(1000, 0.5, 2) 
dx <- density(x) 
dy <- density(y) 
plot(dx, xlim = range(dx$x, dy$x), ylim = range(dx$y, dy$y), 
    type = "l", col = "red") 
lines(dy, col = "blue") 

enter image description here

0

這很可能。

我沒有數據可以使用,但這裏有一個帶有不同顏色條的直方圖的例子。從這裏你需要使用我的代碼,並找出如何使它工作的因素而不是尾巴。

BASIC SETUP 直方圖< - HIST(刻度(載體)),斷裂=,情節= FALSE) 圖(直方圖,COL = ifelse(ABS(直方圖$符)<循環移位#of SD,顏色1,顏色2 ))

#EXAMPLE 
x<-rnorm(1000) 
histogram <- hist(scale(x), breaks=20 , plot=FALSE) 
plot(histogram, col=ifelse(abs(histogram$breaks) < 2, "red", "green")) 
1

這是相當不清楚你作爲一個數據佈局。直方圖要求您有一個序數或連續的變量,以便可以創建中斷。如果你還有一個單獨的分組因子,你可以繪製直方圖的條件。第二個例子是格子包中的histogram函數的幫助頁面中提供了這樣一個分組並覆蓋密度曲線的一個很好的例子。 Second lattice::histgram example

用於學習格和ggplot2繪圖相對優點的好資源是Learning R博客。兩個繪圖系統This is from the first of a multipart series on side-by=side comparison

library(lattice) 
library(ggplot2) 
data(Chem97, package = "mlmRev") 
#The lattice method: 
pl <- histogram(~gcsescore | factor(score), data = Chem97) 
print(pl) 

Lattice histogram

# The ggplot method: 
pg <- ggplot(Chem97, aes(gcsescore)) + geom_histogram(binwidth = 0.5) + 
    facet_wrap(~score) 
print(pg) 

enter image description here

0

我同意其他人的密度積比合並直方圖的彩條更有效,特別是如果團隊的價值是混合的。這將是非常困難的,不會告訴你很多。你得從其他一些很好的建議對密度圖,這是我的2美分,我有時會使用密度圖:

y <- rnorm(1000, 0, 1) 
x <- rnorm(1000, 0.5, 2) 
DF <- data.frame("Group"=c(rep(c("y","x"), each=1000)), "Value"=c(y,x)) 

library(sm) 

with(DF, sm.density.compare(Value, Group, xlab="Grouping")) 
title(main="Comparative Density Graph") 
legend(-9, .4, levels(DF$Group), fill=c("red", "darkgreen")) 
相關問題