我正在尝试使用d$color
显示点图并为点着色。在当前的解决方案设置中,col = c("red","green")
不是动态的。您可以看到d $颜色中的第一个点应为绿色,但它显示为红色。应该有6个绿点和4个红点,但有6个红点和4个绿点。
d矢量中的数据将一直变化,因此硬编码col = c("红色","绿色")不允许准确的点颜色。有没有办法只使用col = d $ color?
library(mosaic)
n=10
r =c(seq(1,15,1))
binwidth = 1
dat = sample(r ,n= 1,size = n, replace = TRUE)
d = data.frame( x = dat, color = c(rep("red",n/2), rep("green",n/2)))
d$color[1] = "green"
d
dotPlot(~x,data=d, groups = color, breaks = seq(min(d$x)-binwidth,max(d$x)+binwidth,binwidth), cex = 1, col = c("red","green"))
答案 0 :(得分:4)
由于这是一个格子图,你需要使用" groups"作为一个参数,当你想要在同一个面板中的单独项目,并且' col'需要是一个与组数相同长度的向量:
dotPlot(~x, groups=color,data=d, breaks = seq(min(d$x)-.1,max(d$x)+.1,.1), col=c("green","red"))
d $ color列会有一个隐含的" factor()" -ing,并且给col-argument的颜色顺序需要匹配颜色列的词汇顺序将导致如此“绿色”是第一个' red'是第二个。如果您想以编程方式执行此操作,则为col=sort(unique(d$color))
。