如何使用ggplot2图例表示不同的几何图形

时间:2019-03-04 04:44:40

标签: r ggplot2

我正在使用ggplot2从.csv文件中绘制点,该文件只是使用x值的列和使用y值的列。我对ggplot如何决定如何制作图例感到困惑,并且在网上找不到任何好的示例。

我希望图例显示geom_point是压力与压力,而我的geom_smooth是最合适的线。

这是我的代码:

library(ggplot2)
imported = read.csv("data.csv")

Strain = imported$Strain
Stress = imported$Stress..N.m.2.
err = .0005

gg <-
  ggplot(imported, aes(x=Strain, y=Stress)) + 
  geom_point(aes(group = "Points"), shape = 79, colour = "black", size = 2, stroke = 4) + 
  geom_smooth(method = "lm", se = FALSE, color = "orange") + 
  geom_errorbarh(xmin = Strain - err, xmax = Strain + err, show.legend = TRUE) + 
  theme_gray() + ggtitle("Stress vs Strain") + 
  theme(legend.position = "top")

gg 

它正在产生以下情节: my plot

1 个答案:

答案 0 :(得分:2)

编辑:在顶部添加了一种方法,通过创建虚拟贴图来分隔各个外观,从而为每个几何图形创建图例。

library(ggplot2)
ggplot(mtcars, aes(mpg, wt)) +
  geom_point(aes(color = "point")) +   # dummy mapping to color
  geom_smooth(method = "lm", se = FALSE, color = "orange",
               aes(linetype = "best fit")) +  # dummy mapping to linetype
  geom_errorbarh(aes(xmin = mpg - 2, xmax = mpg + 1)) +

  scale_color_manual(name = "Stress vs. Strain", values = "black") +
  scale_linetype_manual(name = "Best fit line", values = "solid")

enter image description here


原始答案

请注意此处图例的区别:

library(ggplot2)
ggplot(mtcars, aes(mpg, wt, color = as.character(cyl))) +
    geom_point() +
    geom_errorbarh(aes(xmin = mpg - 2, xmax = mpg + 1), 
      show.legend = TRUE)  # error bars reflected in legend

with error bar in legend

ggplot(mtcars, aes(mpg, wt, color = as.character(cyl))) +
    geom_point() +
    geom_errorbarh(aes(xmin = mpg - 2, xmax = mpg + 1), 
      show.legend = FALSE)   # error bars not shown in legend

without error bar in legend