数据可视化——R语言使用ggplot2工具包绘制分面的曲线图

数据可视化——R语言使用ggplot2工具包绘制分面的曲线图

概述:R语言使用ggplot2工具包绘制分面的曲线图,即依据数据的不同属性进行分面显示,并详细设置了不同绘图参数,使得绘制的图形更美观。

使用工具:R语言中的ggplot2工具包, RcolorBrewer颜色工具包

RcolorBrewer包在我之前的博客有介绍,请参考:数据可视化——R语言使用ggplot2工具包绘制精美的条形图(https://blog.csdn.net/zhouhucheng00/article/details/85801297)

下面展示一个我的示例,主要是对各种绘图参数进行了仔细设置,使得图形更美观。示例中的数据为模拟生成的。模拟数据包括两个组别group1和group2,每个组别5个属性(Attribute_1到 Attribute_5),每个组别的每个属性都有相应的横(X_value)纵(Y_value)坐标的值。

代码如下:

rm(list=ls()) #清除工作区

library(ggplot2)
library(RColorBrewer)

#生成模型数据
Group <- c(rep("group1",30),rep("group2",30))
Attribute <- c(rep("Attribute_1",10),rep("Attribute_2",10),rep("Attribute_3",10),
               rep("Attribute_1",10),rep("Attribute_2",10),rep("Attribute_3",10))
X_value <- rep(1:10,6)
Y_value <- c(1:10+rnorm(10),1:10+rnorm(10),1:10+rnorm(10),seq(2,21,by=2)+rnorm(10),seq(2,21,by=2)+rnorm(10),seq(2,21,by=2)+rnorm(10))
Data <- data.frame(Group=Group,Attribute=Attribute,X_value=X_value,Y_value=Y_value)


P <- ggplot(Data,aes(x=X_value,y=Y_value))+
  facet_wrap(~Attribute,ncol=3,scales ="free_y")+ #依据Attribute进行分面绘制,ncol=3表示分三列显示,scales ="free_y"表示三个分面的Y轴范围不固定,即依据各自的数据自动分配Y轴的显示范围
  geom_line(aes(color=Group),size=2)+ #绘制曲线,线的颜色由Group指定,宽度size=2
  # coord_cartesian(xlim = c(0, 10))+ #限定X轴的显示范围
  scale_color_manual(values = brewer.pal(12, "Paired")[c(3,5)])+ #指定下线的颜色
  theme_bw()+ #让刻度线和网格线的颜色更协调一些
  theme(axis.text.x=element_text(family="Times",size=14,face="plain"), #x轴刻度的数字属性设置,family指定字体簇,size指定大小,face指定字体样式(如正常/斜体/粗体等)
    axis.text.y=element_text(family="Times",size=14,face="plain"), #Y轴刻度的数字属性设置
    axis.title.x=element_text(family="Times",size = 16,face="bold.italic"), #x轴的标题字体属性设置
    axis.title.y=element_text(family="Times",size = 16,face="bold.italic"), #x轴的标题字体属性设置
    strip.text=element_text(family="Times",size = 18,face="italic"), #分面的标题字体属性设置(即对应Attribute_1,Attribute_2,Attribute_3)
    panel.border = element_blank(),axis.line = element_line(colour = "black",size=0.6),#背景色置为白色,并将x=0轴和y=0轴加粗显示(size=,0.6)
    legend.text=element_text(face="italic", family="Times", colour="black", #设置图例的子标题的字体属性
                             size=14),
    legend.title=element_text(face="italic", family="Times", colour="black", #设置图例的总标题的字体属性
                              size=16))+ 
  ylab("Value")+xlab("Percentage(%)")  #指定x轴和y轴的标题


P

jpeg(file = "results_Value.jpg",width =4500,height = 1500,units = "px",res =300) #结果保存保存为results_Value.jpg,宽高为4500*1500像素,分辨率为300dpi
print(P)
dev.off()

效果图如下:
在这里插入图片描述
ggplot2中的facet_wrap()可以依据两个因子变量:变量变量(行列)设置出不同的分面效果,本例中facet_wrap(~Attribute)表示依据Attribute变量进行按列的分面进行显示。

ggplot2中的coord_cartesian()可以限定x和y的数据显示的范围。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值