无法在ggplot折线图中正确显示多行

时间:2018-03-08 13:01:14

标签: r ggplot2

我的数据格式如下:

    Block    Condition    Value
    1        Red          66
    2        Red          34
    3        Red          48
    4        Red          55
    5        Red          63
    6        Red          23
    1        Blue         72
    2        Blue         28
    3        Blue         82
    4        Blue         44
    5        Blue         44
    6        Blue         32
    1        Yellow       22
    2        Yellow       24
    3        Yellow       54
    4        Yellow       18
    5        Yellow       27
    6        Yellow       66

我希望在折线图中将其可视化,x轴上的块1-6,y轴上的值和根据条件着色的三条线。我试过了:

    ggplot(data = df, aes(x=Block, y=Value, colour = Condition) +
    geom_line()

这导致了一个空图形,即位于X轴上的块,值按预期放置在y轴上,但没有线条。在线搜索时,我注意到有些人设法通过将条件从字符转换为因子来解决它。我试过了:

    ggplot(data = tacs, aes(x=Block, y=Value, colour 
    =as.factor(Condition))) +
     geom_line()

但这也没有奏效。我对R比较陌生,希望有人能够指出我正确的方向。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码缺少一个括号。它应该是这样的:

 ggplot(data = df, aes(x=Block, y=Value, colour = Condition)) +
    geom_line()

应生成此图表:

enter image description here

警告geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?

不确定这是否是您想要绘制的内容,因为未绘制线条。原因是需要为aes()指定geom_line(),尤其是group=Condition。如果您使用此代码,您将获得一个更好的图表:

ggplot(df, aes(x = Block, y = Value, colour = Condition)) +
  geom_line(aes(x = Block, y = Value, colour = Condition, group = Condition))

enter image description here

这背后的原因是geom_line()只有在被告知它们属于同一数据组时才连接点。 See this link了解更多信息。如果您想要指定的确切颜色,可以使用scale_color_manual()手动指出这些颜色,我认为这就是您所追求的:

ggplot(df, aes(x = Block, y = Value, colour = Condition)) +
  geom_line(aes(x = Block, y = Value, colour = Condition, group = Condition)) +
  scale_color_manual(values=c("red", "blue", "yellow"))

enter image description here