多数据帧图自定义图例和 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 部分的输出:
数据是 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 部分的输出: