我似乎找不到针对此特定问题的解决方案,因此我希望有人可以提供帮助(并且我没有错过任何事情)。
我有ggplot2的长格式数据,其中有两个属性,我想在图例中添加到标签中。样本数据集:
require(ggplot2)
ds1=data.frame("Heading"="Alpha","Val"=0.534,"x"=seq(1,5,1),"y"=(seq(10,2,-2)**1.5))
ds2=data.frame("Heading"="Beta","Val"=0.732,"x"=seq(1,5,1),"y"=seq(30,6,-6))
ds3=data.frame("Heading"="Carotene","Val"=0.877,"x"=seq(1,5,1),"y"=seq(3,15,3))
test1=rbind(ds1,ds2,ds3)
test1$Head1=factor(test1$Heading)
test1$Val=factor(test1$Val)
p5=ggplot(test1,mapping=aes(x=x,y=y,colour=Heading)) + geom_line(size=1)
print(p5)
但是,关于第二条数据,Val,我也想谈一谈。我在这里发现的一个建议是使用交互:
p5 = ggplot(test1,mapping=aes(x=x,y=y,colour=interaction(Heading,Val,sep=" "))) + geom_line(size=1) + labs(colour="Heading")
其中包含了我想要的所有信息,但是可以一起运行。或者,我尝试了
p5=ggplot(test1,mapping=aes(x=x,y=y,colour=Heading)) + geom_line(size=1)
p5 + scale_colour_discrete(labels=paste(levels(test1$Heading)," (",levels(test1$Val),")",sep=""))
但是,对于我真正的目标,我想对“ Val”信息进行格式化,以便插入适当数量的空格以将它们分成几列。类似于data.frame,但也包含图例/颜色信息。或者只是以某种方式右对齐该一半(Val),使每行的前半部分(Heading)左对齐。试,
p5 = ggplot(test1,mapping=aes(x=x,y=y,colour=interaction(Heading,Val,sep="\t"))) + geom_line(size=1) + labs(colour="Heading")
强制制表符停止(希望跳变可能以某种与机器相关的方式起作用),尽管使用“ \ n”也可以(为了节省空间和清晰度,我想将标签保持在一行上,但这似乎也不起作用)我要绘制的数据有12个级别,我希望查看者能够轻松地向下扫描值范围)。感谢您的任何建议...
如果您愿意反转值和标签,这将为您提供要查找的列:
test1$grouping <- sprintf("%s - %s", test1$Val, test1$Heading)
ggplot(test1,mapping=aes(x=x,y=y,colour=grouping)) + geom_line(size=1) + labs(colour="Heading")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句