r - 如何添加图例以使用来自多个数据框的数据进行绘图

标签 r ggplot2 legend

我已经编写了一个从两个单独的数据框编译的 ggplot 脚本,但目前没有图例,因为颜色不包含在 aes 中。如果可能,我更愿意将两个数据集分开,但不知道如何添加图例。有什么想法吗?

我尝试将颜色直接添加到 aes 函数中,但随后颜色只是作为变量添加并列在图例中,而不是为实际数据着色。

在创建我会使用的图后,使用基数 r 绘制此图:

legend("top",c("Delta 18O","Delta 13C"),fill=c("red","blue")

并得到了我需要的东西,但我不确定如何在 ggplot 中复制它。

以下代码当前准确地绘制了我想要的图,它只是缺少图例......理想情况下应该与上面的行产生的匹配,除了“18”和“13”需要上标。

可以在此处找到使用基数 r 的旧图示例(具有正确的图例,除了缺少上标 13 和 18)和当前图缺少图例:
旧:https://imgur.com/xgd9e9C
新的、缺失的图例:https://imgur.com/eGRhUzf

背景数据
head(avar.data.x)
      time          av       error
1 1.015223 0.030233604 0.003726832
2 2.030445 0.014819145 0.005270609
3 3.045668 0.010054801 0.006455241
4 4.060891 0.007477541 0.007453974
5 5.076113 0.006178282 0.008333912
6 6.091336 0.004949045 0.009129470
head(avar.data.y)
      time         av       error
1 1.015223 0.06810001 0.003726832
2 2.030445 0.03408136 0.005270609
3 3.045668 0.02313839 0.006455241
4 4.060891 0.01737148 0.007453974
5 5.076113 0.01405144 0.008333912
6 6.091336 0.01172788 0.009129470

下面的 avarn 函数生成一个包含三列和几千行的数据框(见上面的标题)。然后在日志/日志图上随时间绘制这些图表。
avar.data.x <- avarn(data3$"d Intl. Std:d 13C VPDB - Value",frequency)

avar.data.y <- avarn(data3$"d Intl. Std:d 18O VPDB-CO2 - Value",frequency)

创建艾伦偏差图
ggplot()+
      geom_line(data=avar.data.y,aes(x=time,y=sqrt(av)),color="red")+
      geom_line(data=avar.data.x,aes(x=time,y=sqrt(av)),color="blue")+
      scale_x_log10()+
      scale_y_log10()+
      labs(x=expression(paste("Averaging Time ",tau," (seconds)")),y="Allan Deviation (per mil)")

上面的图只缺少一个图例来显示两个绘制数据集的名称及其各自的颜色。我想要图表顶部​​中心的图例。

如何上标图例标题?:
ggplot()+
  geom_line(data=avar.data.y,aes(x=time,y=sqrt(av), 
color =expression(paste("Delta ",18^,"O"))))+
  geom_line(data=avar.data.xmod,aes(x=time,y=sqrt(av), 
color=expression(paste("Delta ",13^,"C"))))+
  scale_color_manual(values = c("blue", "red"),name=NULL) +
  scale_x_log10()+
  scale_y_log10()+
  labs(
    x=expression(paste("Averaging Time ",tau," (seconds)")),
    y="Allan Deviation (per mil)") + 
  theme(legend.position = c(0.5, 0.9))

最佳答案

套装coloraes并添加一个 scale_color_您的情节的功能应该可以解决问题。

ggplot()+
  geom_line(data=avar.data.y,aes(x=time,y=sqrt(av), color = "a"))+
  geom_line(data=avar.data.x,aes(x=time,y=sqrt(av), color="b"))+
  scale_color_manual(
    values = c("red", "blue"),
    labels = expression(avar.data.x^2, "b")
  ) +
  scale_x_log10()+
  scale_y_log10()+
  labs(
    x=expression(paste("Averaging^2 Time ",tau," (seconds)")),
    y="Allan Deviation (per mil)") + 
  theme(legend.position = c(0.5, 0.9))

关于r - 如何添加图例以使用来自多个数据框的数据进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58789168/

相关文章:

r - 如何粘贴 100000 而不将其缩短为 1e+05?

r - ggplot中每个时间段的日期之间的阴影

R将传统情节和ggplot2放在一起

r - 使用 ggplot2 绘制 ECDF 数据

r - 在train方法中tuneGrid和trControl之间有什么关系?

r - 如何在 R 中定义常量

r - 如何避免气泡图中重叠的气泡?

r - 如何改变 "position_dodge"一个点而不是 ggplot2 系列中的其他点

r - ggplot2:在图例中显示缺失值颜色

legend - ECharts:树形图的显示图例?