📌  相关文章
📜  绘制 ggplot2 图,每边有两个 Y 轴,在 R 中使用不同的比例(1)

📅  最后修改于: 2023-12-03 14:56:52.123000             🧑  作者: Mango

在 R 中使用 ggplot2 绘制双 Y 轴图

在数据分析和可视化中,双 Y 轴图可以同时展示两个不同意义的变量。在 R 中,使用 ggplot2 包可以轻松地绘制出双 Y 轴图,并调整两个 Y 轴的比例,以确保图形的可读性和准确性。

使用 ggplot2 绘制双 Y 轴图

首先,需要安装并加载 ggplot2 包:

install.packages("ggplot2")
library(ggplot2)

接着从数据集中选择需要展示的变量。在这个例子中,我们使用 R 内置的 mpg 数据集,其中包含了许多汽车的相关信息。

data(mpg)

然后,我们可以使用 ggplot 函数创建一个空白的绘图对象,设置 x 轴和第一个 y 轴的标题,添加第一个数据集并绘制第一个基础层。

ggplot(data = mpg, aes(x = displ, y = cty)) + 
  labs(x = "Displacement", y = "City MPG") + 
  geom_point()

这将生成一张简单的散点图,其中 x 轴是排量,y 轴是城市每加仑的英里数。

接下来,我们需要添加第二个 y 轴和第二个数据集。为了使第二个 y 轴可以与第一个 y 轴区分开来,需要创建一个新的 y 轴标度,将其命名为第二个变量的名称,例如 “Highway MPG”(公路每加仑英里数)。此外,需要将第二个数据集添加到绘图中,并添加一个新的基础层。

ggplot(data = mpg, aes(x = displ, y = cty)) + 
  labs(x = "Displacement", y = "City MPG") + 
  geom_point(aes(color = "City MPG")) + 
  scale_y_continuous(name = "City MPG", sec.axis = sec_axis(~ ., name = "Highway MPG")) + 
  geom_point(aes(y = hwy, color = "Highway MPG"))

在这个例子中,我们使用颜色来区分两个数据集。其中,城市每加仑的英里数用蓝色散点表示,公路每加仑的英里数用红色散点表示。

调整双 Y 轴的比例

在双 Y 轴图中,两个变量的比例往往不同。为了使图形更加准确和易读,需要调整两个 Y 轴的比例。

在 ggplot2 中,可以使用 sec_axis 函数来设置第二个 Y 轴的比例。其中,第一个参数 ~ . 表示将第二个数据集的值与原始刻度标签相同,第二个参数 name 表示第二个 Y 轴的名称。

ggplot(data = mpg, aes(x = displ, y = cty)) + 
  labs(x = "Displacement", y = "City MPG") + 
  geom_point(aes(color = "City MPG")) + 
  scale_y_continuous(name = "City MPG", sec.axis = sec_axis(~ . * 1.5, name = "Highway MPG")) + 
  geom_point(aes(y = hwy, color = "Highway MPG"))

在这个例子中,我们将公路每加仑的英里数的比例增加了 1.5 倍。这样做可以确保两个 Y 轴之间的比例更加准确,图形更加易读。

总结

使用 ggplot2 包可以轻松地绘制出双 Y 轴图,并调整两个 Y 轴的比例,以确保图形的可读性和准确性。在创建图形时,需要注意数据集的选择和变量的定义,并使用 sec_axis 函数调整两个 Y 轴的比例。