ggplot2 - 当多行时控制线型

时间:2016-11-24 16:25:30

标签: r ggplot2

采用以下示例:

library(ggplot2)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]

ggplot(dsamp, aes(x = x)) +
    geom_line(aes(y = y, linetype = "Simple Model")) +
    geom_line(aes(y = z, linetype = "Complex Model"))

生成此图表: enter image description here

确定。我的问题是我想要反转线型。我希望简单模型使实线和复杂模型变为虚线。默认情况下,字母顺序似乎是在这里决定线型。我尝试使用scale_linetype_manual等进行了不同的变化,但尝试我可能无法让简单的线条变得坚实,复杂的线条会被破坏,同时保持“简单”和“简单”。传说中的“复杂”标题。在有人建议之前,我试图避免融化/重塑这些数据,这样两个y变量都在1列中,因为真实数据在情节等方面有更多,而且它真的很复杂。

编辑:好的,谢谢Haboryme的回复。我找到了混乱的根源。

采取以下情节:

ggplot(dsamp, aes(x = x)) +
    geom_line(aes(y = y, linetype = "Simple Model"), size = 1.5) +
    geom_line(aes(y = z, linetype = "Complex Model"), size = 1.5) +
    scale_linetype_manual(values=c( 5, 1))

图例似乎将线型显示为实线: enter image description here

但是,如果我将其更改为第3行:

ggplot(dsamp, aes(x = x)) +
    geom_line(aes(y = y, linetype = "Simple Model"), size = 1.5) +
    geom_line(aes(y = z, linetype = "Complex Model"), size = 1.5) +
    scale_linetype_manual(values = c( 3, 1))

线型图例是正确的: enter image description here

嗯,我想这解决了我的问题 - 我只需要使用线型3.看起来线型5的大小为1.5并不适合传说空间吗?

1 个答案:

答案 0 :(得分:2)

ggplot(dsamp, aes(x=x)) +
  geom_line(aes(y=y, linetype="Simple Model"),size=1.5) +
  geom_line(aes(y=z, linetype="Complex Model"),size=1.5)+
  scale_linetype_manual(values=c(5,1))

上面的代码将为您提供一个图表,其中两条线在图例中看起来相似 这是因为linetype=5相当于“longdash”(2是“虚线”)。长篇画面太长了,不能在传说中显示出来。

如果您希望保留size=1.5(或更高版本)的长篇并有一个合适的图例,您还需要更改图例的大小,例如:

+theme(legend.key.size=unit(2,"cm"))