ggplot2:如何显示图例[重复]

Posted

技术标签:

【中文标题】ggplot2:如何显示图例[重复]【英文标题】:ggplot2: how to show the legend [duplicate] 【发布时间】:2013-03-03 08:02:28 【问题描述】:

我用ggplot2 做了一个简单的经典情节,它是两张图合二为一。但是,我正在努力展示传奇。它没有显示传奇。我没有使用融化和重塑的方式,我只是使用经典的方式。下面是我的代码。

df <- read.csv("testDataFrame.csv")

graph <- ggplot(df, aes(A)) + 
  geom_line(aes(y=res1), colour="1") +
  geom_point(aes(y=res1), size=5, shape=12) +
  geom_line(aes(y=res2), colour="2") +
  geom_point(aes(y=res2), size=5, shape=20) +
  scale_colour_manual(values=c("red", "green")) +
  scale_x_discrete(name="X axis") +
  scale_y_continuous(name="Y-axis") +
  ggtitle("Test") 
  #scale_shape_discrete(name  ="results",labels=c("Res1", "Res2"),solid=TRUE) 

print(graph)

数据框是:

 A,res1,res2
 1,11,25
 2,29,40
 3,40,42
 4,50,51
 5,66,61
 6,75,69
 7,85,75

关于如何显示上图的图例有什么建议吗?

【问题讨论】:

【参考方案1】:

ggplot2 中,您设置的每一种美学 (aes) 都会显示图例;如groupcolourshape。为此,您必须以以下形式获取数据:

A variable value
1     res1    11
...    ...    ...
6     res1    85
7     res2    75

您可以使用meltreshape2 完成此操作(如下所示):

require(reshape2)
require(ggplot2)

ggplot(dat = melt(df, id.var="A"), aes(x=A, y=value)) + 
      geom_line(aes(colour=variable, group=variable)) + 
      geom_point(aes(colour=variable, shape=variable, group=variable), size=4)

例如,如果您不希望 colour 获得积分,则只需从 geom_point(aes(.)) 中删除 colour=variable。更多图例选项,请关注this link

【讨论】:

谢谢。如何更改颜色变量的名称。我可以重命名例如结果,而不是显示图例的变量。有没有办法。。对于形状,我刚刚删除了颜色并使用了 scale_shape_discrete(name ="Results",labels=c("Res1", "Res1"),solid = TRUE) 并且它可以工作。不知道怎么换颜色? 直接/直接的方法是将融化的 data.frame 保存到一个变量中,例如:df.m &lt;- melt(df, id.var="A")。现在,将 df.m 列名称更改为您想要的任何名称。

以上是关于ggplot2:如何显示图例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 ggplot2 获取图例以正确显示

R:ggplot2,为啥我的图例显示褪色?

图例在 ggplot2 密度图中不显示线型

ggplot2:显示 x 轴值的附加特定图例

获取 ggplot2 图例以在 r 中显示百分比符号

ggplot2 - 在大小图例中显示多个键(形状)