多数据帧图自定义图例和 X 轴中断?

Multiple Data Frame Plot Custom Legend and X Axis Breaks?

数据是 1965-2019 年可再生能源与替代能源的对比。我有两个问题要在这里解决。我想 1) 添加一个自定义图例来表示两种颜色并相应地命名它们。 2) 我想知道是否有一种简单的方法可以在不努力工作的情况下在 x 轴上创建中断,基本上只每隔一年或每 5 年显示一次中断以获得更好的可解释性。我的代码和当前输出图如下。它是两个数据框的叠加,每个数据框都有一个简单的 x 和 y 变量。

renew_plot <- ggplot(NULL, aes(x, y)) +
  xlab('Years') +
  ylab('Terawatt/Hr') +
  ggtitle('Global Energy Consumption By Year') +
  geom_point(data = renew_tot_energy_con_by_year, col = "green") +
  geom_point(data = oth_tot_energy_con_by_year, col = "blue")
renew_plot

我 运行 遇到的主要问题是找出图例,因为它们来自不同的数据框。有没有办法用两个简单的几何点创建一个自定义图例,我可以匹配与我的情节相同的颜色?我相信那将是最简单的。我不确定解决此问题的最佳方法。

我从你压扁的 x 轴猜测你的 x 数据在两个数据集中至少一个是字符或因子格式,所以 ggplot2 不会自动选择“漂亮”的中断,而是显示所有这些.您可以将 x 值转换为数字(例如 a$x = as.numeric(a$x) 如果它的字符或 a$x = as.numeric(as.character(a$x))` 如果它的因子)或指定离散如下所示。

要将来源添加到图例中,您可以将来源名称映射到颜色美学。

a <- data.frame(x = as.character(1990:2021), y = mtcars$mpg)
b <- data.frame(x = as.character(1990:2021), y = mtcars$hp)
library(ggplot2)
ggplot(NULL, aes(x,y)) +
  geom_point(data = a, aes(color = "a")) +
  geom_point(data = b, aes(color = "b")) +
  scale_x_discrete(breaks = seq(1990, 2020, by = 5))

没有 scale_x_discrete 部分的输出:

带有 scale_x_discrete 部分的输出: