python和R绘制箱线图+抖动点
创始人
2024-02-14 19:04:20
0

python和R绘制箱线图+抖动点

散点箱线图

IPCC AR6 https://www.ipcc.ch/
通过散点展示数据的直观分布
x轴刻度标签如果是“连续”数据,可添加渐变背景。通过渐变来体现升温幅度,美观形象。

python版本:

先手搓数据:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as pltsns.set_theme(style="darkgrid")
# Dataset:
a = pd.DataFrame({ 'group' : np.repeat('A',50), 'value': np.random.normal(10, 5, 50) })
b = pd.DataFrame({ 'group' : np.repeat('B',50), 'value': np.random.normal(13, 1.2, 50) })
c = pd.DataFrame({ 'group' : np.repeat('B',50), 'value': np.random.normal(18, 1.2, 50) })
d = pd.DataFrame({ 'group' : np.repeat('C',20), 'value': np.random.normal(25, 4, 20) })
e = pd.DataFrame({ 'group' : np.repeat('D',10), 'value': np.random.uniform(12, size=10) })
df = pd.concat([a, b, c, d, e])

然后通过boxplot绘制箱线图,通过stripplot绘制抖动点,通过pointplot绘制平均值点。
PS:pointplot并不是画“点”的函数,而是

df = sns.load_dataset("penguins")
sns.pointplot(data=df, x="sex", y="bill_depth_mm", hue="island", dodge=True)


但是我们不要上下的误差线,也不用连接线:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as pltsns.set_theme(style="darkgrid")
# Dataset:
a = pd.DataFrame({ 'group' : np.repeat('A',50), 'value': np.random.normal(10, 5, 50) })
b = pd.DataFrame({ 'group' : np.repeat('B',50), 'value': np.random.normal(13, 1.2, 50) })
c = pd.DataFrame({ 'group' : np.repeat('B',50), 'value': np.random.normal(18, 1.2, 50) })
d = pd.DataFrame({ 'group' : np.repeat('C',20), 'value': np.random.normal(25, 4, 20) })
e = pd.DataFrame({ 'group' : np.repeat('D',10), 'value': np.random.uniform(12, size=10) })
df = pd.concat([a, b, c, d, e])# Initialize the figure
f, ax = plt.subplots()
#sns.despine(bottom=True, left=True)# Show each observation with a scatterplot
ax = sns.boxplot(x='group', y='value', data=df, color='white')#, showcaps=False)
ax = sns.stripplot(data=df, x="group", y="value", hue="group",alpha=.25, zorder=1, legend=False, jitter=0.2
)
ax = sns.pointplot(data=df, x="group", y="value", hue="group",join=False,  palette="dark", estimator='mean',markers="d", scale=.75, errorbar=None
)
sns.legend = None#ax = sns.stripplot(x='group', y='value', data=df, color="orange", jitter=0.2, size=2.5)
plt.show()

R语言版本

# edit by WangLonghao hhuwlh@163.com
# 2022.11.15
# generate data
library(tidyverse)names <- c(rep("A", 40) , rep("B", 25) , rep("C", 35), rep("D", 30))
value <- c( rnorm(40 , mean=10 , sd=9) , rnorm(25 , mean=2 , sd=15) , rnorm(35 , mean=0 , sd=10) , rnorm(30 , mean=-10 , sd=12))
dplot <- data.frame(names,value)
lower <- dplot$value %>% tapply(names, function(x){return(quantile(x, c(0.25)))
})
upper <- dplot$value %>% tapply(names, function(x){return(quantile(x, c(0.75)))
})
median <- dplot$value %>% tapply(names, median)dplot <- data.frame(names,value,lower=c(rep(lower[1], 40), rep(lower[2], 25), rep(lower[3], 35), rep(lower[4], 30)),upper=c(rep(upper[1], 40), rep(upper[2], 25), rep(upper[3], 35),rep(upper[4], 30)), median=c(rep(median[1], 40), rep(median[2], 25), rep(median[3], 35), rep(median[4], 30)))# Plot boxplot1
dplot <- data.frame(names,value,lower=c(rep(lower[1], 40), rep(lower[2], 25), rep(lower[3], 35), rep(lower[4], 30)),upper=c(rep(upper[1], 40), rep(upper[2], 25), rep(upper[3], 35),rep(upper[4], 30)), median=c(rep(median[1], 40), rep(median[2], 25), rep(median[3], 35), rep(median[4], 30)))dplot %>% ggplot(aes(x=names,y=value))+geom_boxplot(color="black", fill="black", alpha=0.2, width=0.3, outlier.shape = NA, coef = 0) +geom_jitter(color="black", size=1, alpha=0.9, width=0.2)+theme_classic()

晶须影响,我们也去掉了,只需要在代码中稍作修改

image-20221115164415586

接下来将图片导出到PPT,导出eps格式的图像,拖入ppt,右键“转换为形状”,再次右键“组合”——“取消组合”,这样就可以对图片的各个部件进行修改。

接下来绘制一个长方形,置于图片底层,右键设置格式。填充与线条-渐变光圈,按下图设置:

image-20221115165328633

最后调整文字大小、截断坐标轴、添加圆圈形状来突出重点区域,复现结果如图:

image-20221115175914653

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...