R语言双Y轴折线图+相关性注释

发布于:2025-03-26 ⋅ 阅读:(31) ⋅ 点赞:(0)

目录

包和数据

作图代码及详解


包和数据
rm(list = ls())
library(ggpubr)
library(scales)
library(ggplot2)

data <- iris##鸢尾花数据集
data1 <- data[1:30,c(1,2,3)]
> head(data1)
  Sepal.Length Sepal.Width Petal.Length
1          5.1         3.5          1.4
2          4.9         3.0          1.4
3          4.7         3.2          1.3
4          4.6         3.1          1.5
5          5.0         3.6          1.4
6          5.4         3.9          1.7
作图代码及详解
#计算相关性
correlation <- cor(data1$Sepal.Length, y=data1$Sepal.Width)#计算相关性值

#pdf("plot1.pdf",width = 8,height = 6)##保存图片
P1 <- ggplot(data1, aes(x = Petal.Length)) +
  #绘制左侧Y轴数据的折线
  geom_line(aes(y = Sepal.Length, color = "Sepal.Length"), size = 1) +     #color参数为了显示图例
  #绘制左侧Y轴数据的散点
  geom_point(aes(y = Sepal.Length, color = "Sepal.Length", shape = "Sepal.Length"), size = 4) +
  #绘制右侧(次级)Y轴数据的散点
  geom_line(aes(y = Sepal.Width, color = "Sepal.Width"), size = 1) +
  geom_point(aes(y = Sepal.Width, color = "Sepal.Width", shape = "Sepal.Width"), size = 4) +
  #数据的颜色设置
  scale_color_manual(
    name = "观测指标",
    values = c("Sepal.Length" = "#c3272b", "Sepal.Width" = "#E8BF80"),
    labels = c("Sepal.Length" = "Sepal Length", "Sepal.Width" = "Sepal Width")
  ) +
  #数据的形状设置(15正方形,16为圆形,17为三角形)
  scale_shape_manual(
    name = "观测指标",
    values = c("Sepal.Length" = 17, "Sepal.Width" = 16),
    labels = c("Sepal.Length" = "Sepal Length", "Sepal.Width" = "Sepal Width")
  ) +
  #右侧Y轴数据和名称(设置次级坐标内容)在第一个Y轴基础上建立第二个Y轴
  #sec.axis函数设置时需要依据Y1范围进行相应设置
  scale_y_continuous(
    name = "Sepal.Length",
    sec.axis = sec_axis(~.*1, name = 'Sepal.Width') #~.*1 表示与左侧Y轴(Y1)的关系
  ) +
  #
  #labs(x = "Petal.Length", y = "Sepal.Length") +
  theme_classic(base_line_size = 1, base_rect_size = 1) +
  theme(
    panel.grid.major = element_blank(),   #隐藏背景网格线
    panel.grid.minor = element_blank(),
    #坐标轴刻度
    axis.text = element_text(colour = '#000000', size = 13),
    #标题文本设置
    plot.title = element_text(size = 15, face = "bold", hjust = 0.5, vjust = 1, color = "#000000"),
    # 调整X轴标题的大小和颜色
    axis.title.x = element_text(size = 14, color = "#801dae"),
    # 调整Y轴标题的大小和颜色
    axis.title.y = element_text(size = 14, color = "#c3272b"),
    # 调整次级Y轴标题的大小和颜色
    axis.title.y.right = element_text(size = 14, color = "#E8BF80"),
    #图例调整
    legend.key.height = unit(10, "pt"),
    legend.key.width = unit(10, "pt"),
    legend.position=c(0.8, 1)
  ) +
  #添加的相关性系数注释
  annotate("text", x = 1.1, y = 6, size = 5,
           label = paste("相关系数: ", round(correlation, 2)), color = "#c3272b") +
  #添加标题
  ggtitle("AAABBB")+
  #添加annotate 水印 alpha = 0.3 透明度设置
  annotate("text", x = 1.5, y = 4, label = "这是第二个注释", alpha = 0.3,
           size = 10, color = "#a1afc9", fontface = "bold", angle = 45)

P1
dev.off()


网站公告

今日签到

点亮在社区的每一天
去签到