实现 ggplot2 多轴图形 - 如何应用辅助 y 轴

想在一张图中比较多个变量吗? 如果您有多个数据,ggplot2 的多轴功能可让您一目了然,轻松实现可视化。

ggplot2 软件包如何添加辅助 y 轴,从不同角度分析数据今天,我们将详细讲解每个步骤,让初学者轻松掌握。

为什么在 ggplot2 中需要多个坐标轴?

数据分析 比较单位不同的两个变量例如,当您想在一张图上显示不同性质的数据(如温度和降水量)时,ggplot2 的多轴功能就非常有用。

1. 绘制基本的折线图

首先,让我们用两个数据绘制一个基本的折线图。

加载 # 库
library(ggplot2)

生成 # 示例数据
data <- data.frame(
    月份 = 1:12、
    温度 = c(2, 3, 5, 9, 14, 18, 21, 20, 15, 10, 5, 3)、
    降雨量 = c(30, 40, 45, 55, 60, 75, 80, 70, 50, 45, 35, 30)
)

生成 # 基线图
p <- ggplot(data, aes(x = month)) +
    geom_line(aes(y = 温度, color = "温度")) +
    geom_line(aes(y = 降雨量,颜色 = "降雨量")) +
    labs(title = "月气温和降雨量", x = "月", y = "气温")

p

代码说明:

  • aes(x = 月份):在 x 轴上设置月份。
  • geom_line(aes(y = temperature, color = "Temperature")):将温度数据绘制成折线图并着色。
  • geom_line(ase(y = 降雨量,color = "降雨量")):单独添加降水数据。
ggplot2 다중 축 예시1

2. 添加辅助 Y 轴

现在 次 Y 轴将降水量(y 轴)显示为一个单独的轴。

加载 # 库
library(ggplot2)

生成 # 示例数据
data <- data.frame(
    月份 = 1:12、
    温度 = c(2, 3, 5, 9, 14, 18, 21, 20, 15, 10, 5, 3)、
    降雨量 = c(30, 40, 45, 55, 60, 75, 80, 70, 50, 45, 35, 30)
)

应用 # 多轴
p <- ggplot(data, aes(x = month)) +
    geom_line(aes(y = 温度, color = "温度")) +
    geom_line(aes(y = 降雨量/10, color = "降雨量")) +
    scale_y_continuous(name = "温度", sec.axis = sec_axis(~.*10, name = "降雨量")) +
    labs(title = "月气温和降雨量", x = "月") +
    scale_colour_manual(values = c("Temperature" = "blue", "Rainfall" = "green"))

p

代码说明:

  • geom_line(aes(y = 降雨量/10, color = "降雨量")):将降水量数据除以 10,转换成与温度相似的范围。
  • scale_y_continuous(name="Temperature"",sec.axis=sec_axis(~.*10,name="Rainfall")):将 y 轴一分为二,在右轴上显示降水量,左轴代表温度,右轴代表降水量。
  • scale_colour_manual(values = c("Temperature" = "温度","Rainfall" = "绿色")):将温度和降雨量分别染成蓝色和绿色,以提高可读性。
ggplot2 다중 축 예시2

3. 附加示例--完美的 ggplot2 多轴图形

在这个例子中,降水量用柱形表示,温度用直线表示,有效地显示了两个变量之间的关系。通过色彩对比和改进的布局,可以很容易地看出数据中的模式,而专业、时尚的设计也增强了视觉吸引力。

加载 # 库
library(ggplot2)
library(scales)

生成 # 示例数据
data <- data.frame(
    月份 = 1:12、
    温度 = c(2, 3, 5, 9, 14, 18, 21, 20, 15, 10, 5, 3)、
    降雨量 = c(30, 40, 45, 55, 60, 75, 80, 70, 50, 45, 35, 30)
)

# 增强型多轴图形生成
p <- ggplot(data, aes(x = month)) +
    geom_col(aes(y = 降雨量, fill = "降雨量"), alpha = 0.5) +
    geom_line(aes(y = 温度 * 4, color = "温度"), size = 1.2) +
    geom_point(aes(y = 温度 * 4, color = "温度"), size = 3) +
    scale_y_continuous(
        name = "降雨量(毫米)"、
        sec.axis = sec_axis(~./4, name = "Temperature (°C)")
    ) + +
    scale_x_continuous(breaks = 1:12, labels = month.abb) + +
    scale_fill_manual(values = c("Rainfall" = "#69b3a2")) +
    scale_colour_manual(values = c("Temperature" = "#E69F00")) +
    labs(
        title = "月气温和降雨量"、
        subtitle = "展示全年气候模式"、
        x = "月"、
        color = ""、
        fill = ""
    ) + Β
    theme_minimal() +
    theme(
        legend.position = "top"、
        plot.title = element_text(hjust = 0.5, face = "bold", size = 16)、
        plot.subtitle = element_text(hjust = 0.5, size = 12, color = "grey50")、
        axis.title = element_text(face = "bold")、
        panel.grid.major = element_line(color = "gray90")、
        panel.grid.minor = element_blank()
    )

p

代码说明:

  • geom_col()条形图:用条形图表示降水量。 阿尔法 = 0.5来调整透明度。
  • geom_line() 和 geom_point()温度:用折线图和点来表示温度。我们将温度值乘以 4,使其比例与降水量相似。
  • scale_y_continuous()注:主 y 轴表示降水量,次 y 轴表示温度。 sec.axis = sec_axis(~./4, name = "Temperature (°C)")作为次轴。
  • scale_x_continuous()显示 x 轴标签的月份缩写。
  • scale_fill_manual() 和 手动缩放颜色( )颜色:为降水和温度分别指定不同的颜色。
  • 实验室()设置图表的标题、副标题和坐标轴标签。
  • theme_minimal()应用简洁的默认主题。
  • 主题()图例:调整图表的详细样式。我自定义了图例位置、标题样式、网格线等。
ggplot2 다중 축 예시3

总结:使用 ggplot2 多坐标轴比较数据,一目了然!

利用 ggplot2 的多坐标轴功能,您可以在一张图上直观地显示和比较不同单位的数据。 次 Y 轴可以让您更轻松地解读复杂数据,为您的分析锦上添花。

现在,你也可以在一张图表中表示各种数据了。在下一篇文章中,我们将了解 介绍 ggplot2 中的高级主题设置我们会的,敬请期待!

类似文章