r - 如何跨两种不同类型的geom ggplot2创建图例
问题描述
我有两个不同的数据集,我想在同一个 ggplot2 图中绘制它们,每个数据集使用不同的几何图形。理想情况下,我还想要一个图例,表明点几何对应于一种数据,而线几何对应于另一种数据,但我不知道该怎么做。下面是我的数据基本上看起来的示例,减去图例。
require(ggplot2)
set.seed(1)
d1 = data.frame(y_values = rnorm(21), x_values = 1:21, factor_values = as.factor(sample(1:3, 21, replace=T)))
d2 = data.frame(y_values = seq(-1,1,by = .05), x_values = seq(1,21,by = .5))
ggplot() +
geom_point(data=d1, aes(x=x_values, y=y_values, color=factor_values)) +
geom_line(data=d2, aes(x = x_values, y=y_values), color="blue")
解决方案
也许这就是你想要的?每个数据有两个图例。您可以启用linetype
以创建新图例,以便点和线可以位于不同的位置:
#Code
ggplot() +
geom_point(data=d1, aes(x=x_values, y=y_values, color=factor_values)) +
geom_line(data=d2, aes(x = x_values, y=y_values,linetype='myline'), color="blue")+
scale_linetype_manual('My line',values='solid')
输出:
或者你也可以试试这个:
#Code 2
ggplot() +
geom_point(data=d1, aes(x=x_values, y=y_values, color=factor_values)) +
geom_line(data=d2, aes(x = x_values, y=y_values,linetype='myline'), color="blue")+
scale_linetype_manual('',values='solid')+
theme(
legend.spacing = unit(-17,'pt'),
legend.margin = margin(t=0,b=0,unit='pt'),
legend.background = element_blank()
)+guides(linetype=guide_legend(title="New Legend Title"),
color=guide_legend(title=""))
输出:
推荐阅读
- android - Gradle 任务 assembleDebug 失败,退出代码为 1.* 出了什么问题:
- r - 如何为网络创建度相关矩阵
- sendgrid - SendGrid 将模板从子用户复制到父帐户
- jackson - Spring:如何在数据库中存储 3rd 方对象
- ios - iOS AVAudioTime hostTime 在 ProcessInfo systemUptime 方面?
- python - 如何将批量图像相乘?形状 [batch, height, width] 的 ND 矩阵乘法(点积)
- angular - 意外的“/”。用 \ 转义特殊字符可能会有所帮助 - Angular 12 build/deploy
- sqlite - .import csv sqlite 数据类型和大小问题
- html - 我使用顺风 css 设计卡片我想为这个按钮留下位置
- visual-studio-2019 - “项目不知道热运行配置文件 MauiApp.WinUI”