gpt4 book ai didi

r - 如何指定ecdf ggplot2中线和点的颜色

转载 作者:行者123 更新时间:2023-12-02 03:06:21 25 4
gpt4 key购买 nike

我有一组很难可视化的数据,但我认为添加了一些点和线的 ECDF 就可以解决问题。我能够按照我想要的方式绘制事情;我的问题是正确着色。

我有以下代码,它将所有正确的线和点放在绘图上,但现在我想正确地对所有内容进行着色和标记。我仔细阅读了多篇文章并尝试了一百种方法,但无法做到正确。我需要以不同的方式格式化我的数据吗?

我对传奇的愿景是这样的:

  • 虚线= b
  • 实线=a
  • 红色=s
  • 蓝色=d
  • 点 = s.mean

生成示例图的代码在这里:

require(ggplot2)
require(reshape2)

s.a = rnorm(100)*100
s.b = rnorm(100)*100+50
d.a = -35
d.b = 20
sdata = data.frame(cbind(s.a,s.b))
ddata = data.frame(cbind(d.a,d.b))
sdata.m = melt(sdata)
ddata.m = melt(ddata)

ggplot(sdata.m, aes(x=value, color=variable)) +
geom_vline(data=ddata.m,
aes(xintercept = value,
color=variable),
linetype = 2,
size=2) +
stat_ecdf(size=1)+
labs(title = 'plotTitle',
color='colorLegendTitle') +
xlab('xLabel') +
ylab('yLabel')+
theme_bw(30) +
theme(
legend.position=c(.8, .2),
legend.box="horizontal",
text=element_text(family="Times"),
legend.key.size = unit(1,"cm")) +
geom_point(x=mean(sdata.m$value[sdata.m$variable=="s.a"]),y=.5,
size = 5) +
geom_point(x=mean(sdata.m$value[sdata.m$variable=="s.b"]),y=.5,
size = 5)

enter image description here我正在绘制的数据的一些上下文:我有随机数据集(s)和确定性集(d);每个随机集将有数百个值,而确定性集只有一个值。因此,在我的图中,我将随机数据的分布(实线)以及随机数据的平均值(点)与确定性值(虚线)进行比较。对于随机数据集和确定性数据集,都有两种“情况”(a) 和 (b)。 我希望所有 (a) 和 (b) 数据共享相同的颜色。

这似乎使用 aes 和颜色/线型/几何映射应该很容易,但我无法弄清楚。

提前致谢。

最佳答案

为了获得更好的图例,请将 color=variablelinetype=variable 放在 aes() 中用于 ggplot()geom_vline() - 所以会有一个图例。然后对于 geom_point() 将 x 和 y 放入 aes() 以及 color="s.mean"linetype= “s.mean”。这将确保新级别添加到图例中。现在,使用 scale_color"manual()scale_linetype_manual(),您可以设置所需的颜色和线型。使用 guides()override。 aes= 您可以从前四个条目中删除点。

ggplot(sdata.m, aes(x=value, color=variable,linetype=variable))+
stat_ecdf(size=1)+
geom_vline(data=ddata.m,
aes(xintercept = value,color=variable,linetype=variable),
size=2) +
geom_point(aes(x=mean(sdata.m$value[sdata.m$variable=="s.a"]),
color="s.mean",linetype="s.mean",y=.5),size = 5) +
geom_point(aes(x=mean(sdata.m$value[sdata.m$variable=="s.b"]),
color="s.mean",linetype="s.mean",y=.5),size = 5)+
scale_color_manual(breaks=c("d.a","d.b","s.a","s.b","s.mean"),
values=c("blue","blue","red","red","green"))+
scale_linetype_manual(breaks=c("d.a","d.b","s.a","s.b","s.mean"),
values=c(1,2,1,2,0))+
guides(color=guide_legend(override.aes=list(shape=c(NA,NA,NA,NA,16))))

enter image description here

关于r - 如何指定ecdf ggplot2中线和点的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com