目录
包和数据
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()