今天有小伙伴让我给他做个气泡图,我让他给我发了个例子,作图基本分为两部分,数据整理和画图,数据整体一般注意变量类型、排列、分类等,画图细节比较多,先出图,后调试(坐标轴、图例、背景、图标、标签等),我的观点是先出图,查看大体样子,然后根据需求再选择调试与否,节省时间。因为调一个图真的太花时间。
ggplot2绘制气泡图+分类+趋势线
1、模板
左边这个是气泡图+标签+分类+趋势线,
右边这个是点图+分类+趋势线+置信区间+标签
2、数据列
三个变量,IN.rate和C.rate为分类变量,因此需要宽转长
> data.demon1 <- data.demon[c(5,8,12)];head(data.demon1)##提取需要数据
INevent.rate Cevent.rate endpoint
1 1.46 1.41 0.78
2 1.26 1.48 1.37
3 2.23 2.26 1.39
4 1.17 1.46 1.40
5 1.10 1.60 1.60
6 2.30 2.91 1.71
> gather(data = data.demon1,key = "IN.C",value = "event.rate",-3)
endpoint IN.C event.rate
1 0.78 INevent.rate 1.46
2 1.37 INevent.rate 1.26
3 1.39 INevent.rate 2.23
4 1.40 INevent.rate 1.17
5 1.60 INevent.rate 1.10
6 1.71 INevent.rate 2.30
7 1.89 INevent.rate 1.86
8 1.99 INevent.rate 1.16
9 2.09 INevent.rate 1.72
3、画图
注意:
1)ggrepel包geom_text_repel()标注
2)
##加载包
library(ggplot2)
library(ggrepel)
library(dplyr)
library(tidyr)
##转化提取数据
data.demon2 <- gather(data = data.demon1,key = "IN.C",value = "event.rate",-3)
str(data.demon2)##查看变量类型
##画图
p.demon <- ggplot(data = data.demon2,aes(x=endpoint,y=event.rate))+##数据列
geom_point(aes(size=event.rate,color=IN.C),alpha=0.7,show.legend = TRUE)+##点图大小、颜色、透明度、图例
geom_smooth(aes(x=endpoint,y=event.rate,color=IN.C),method = lm,linetype=1,se=FALSE,span=1)+##趋势线、颜色、方法、线型、置信区间
guides(color=guide_legend(title=NULL))+##去除图例标题
scale_size(range = c(1, 10),guide=FALSE)+##气泡大小区间,图例标题去除
scale_color_manual(values=c("CornflowerBlue","Gold"),
breaks=c("INevent.rate","Cevent.rate"),
labels=c("1","2"))+##气泡颜色、图例名称修改)+##气泡颜色
labs(x='Endpoint',y='Increase ratio')+##横纵坐标
geom_text_repel(aes(label=event.rate))+##气泡标注
annotate("text",x=1.0,y=2.8,label="atop(Y==3*X+5,R^2==0.9)",parse=T)+##添加公式
#theme(legend.title = element_blank())+
theme_bw();p.demon##设置背景theme
ggsave(p.demon,file="p_demon.png", height=7, width=10)##数据保存默认dpi300
4、结果
数据是随便整的,所以没啥趋势性。基本满足模板的情况。
5、引用
ggplot2–geom_smooth和曲线拟合画图
ggplot2散点图分组添加拟合曲线
R绘图 第九篇:绘制散点图和气泡图(ggplot2)
留个问题图例的位置是如何调整的?