【问题标题】:IS it possible to color dots using mosaic::dotPlot?是否可以使用马赛克::dotPlot 为点着色?
【发布时间】:2015-09-01 23:50:17
【问题描述】:

我正在尝试使用d$color 显示点图并为点着色。在当前解决方案设置中,col = c("red","green") 不是动态的。您可以看到 d$color 中的第一个点应该是绿色,但它显示为红色。应该有 6 个绿点和 4 个红点,但有 6 个红点和 4 个绿点。

d 向量中的数据会一直变化,因此硬编码 col = c("red","green") 将无法获得准确的点颜色。有没有办法只使用 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"))

【问题讨论】:

    标签: r


    【解决方案1】:

    由于这是一个格子图,当您希望在同一面板中显示单独的项目时,您需要使用“组”作为参数,并且“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 的颜色顺序需要与颜色列的词法顺序相匹配,这将导致“绿色”是第一个,“红色”是第二个。如果您想以编程方式执行此操作,请输入col=sort(unique(d$color))

    【讨论】:

    • 感谢@BondedDust。如果每个点都有不同的颜色怎么办?你能看一下编辑后的帖子吗?我有一个 d$color 向量,我想在其中存储点的颜色。在我的示例中,其中一半是红色和一半是绿色,但我没有看到任何绿点。我在想我可以设置 col = d$color,然后每个点将根据其在 d$color 中的相应颜色进行着色。有可能吗
    • 给出的答案有什么问题?它确实将红色标记的项目与绿色标记的项目着色不同。
    • 请运行编辑后的代码。使用 col = c("red","green") 会产生不正确的点颜色,因为数据会发生变化。第一道斜纹布不应总是涂成红色。
    • 问题在于给 col 参数的向量顺序。 d$color 列将有一个隐含的“factor()”-ing,并且给 col-argument 的颜色顺序需要与颜色列的词法顺序相匹配,因此 'green' 为 1 和'red' 是 2。(排序不是由第一行中的值决定的。)我将更改上面的代码,因为我在写答案时并没有真正考虑顺序。
    猜你喜欢
    • 1970-01-01
    • 2022-07-28
    • 2012-08-28
    • 2016-01-07
    • 2017-09-23
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多