seaborn傻瓜级主题设置,轻松使图表达到报告和论文的样式要求。 您所在的位置:网站首页 学术绘图配色要求是什么 seaborn傻瓜级主题设置,轻松使图表达到报告和论文的样式要求。

seaborn傻瓜级主题设置,轻松使图表达到报告和论文的样式要求。

2024-07-10 02:20| 来源: 网络整理| 查看: 265

作者:居居

日期:2021-11-08

Seaborn的傻瓜级别主题封装 如何轻松做出可以达到报告或者学位论文要求的seaborn图。

封装的目的是为了从繁重的绘图代码中解脱出来,专心搞科研!

不多解释了,看的懂的都懂!看不懂的请移步seaborn的Tutorial

一共有5种预设的context样式,分别是默认的“notebook”, 和 “paper”, “talk”, 以及 “poster”。

axes_style的预设有:“dark”,“white”,“darkgrid”,“whitegrid”,“ticks” 一共五种。

palette预设的色盘里面选择“tab10”,"Set1"等等

完整的语句示例:

sns.set_theme(context=yf_sns_context,style="darkgrid",font="Microsoft YaHei",palette=sns.color_palette("tab10"))

sns.ploting_context()可以查看每个context主题的基本设置。

sns.axes_style()可以查看axes样式。

set_theme()中的参数rc,用来自定义设置。

现在来预设主题,定义函数(一次定义,反复使用) import seaborn as sns #字体和坐标轴的线,等的刻度大小,唯一的参数是字号大小,根据自己的需要增加参数,下面这些都是TJxb的线宽标准(也可能有错) def yf_sns_context(fontsize): conText={ 'axes.linewidth': 0.75, #坐标轴线宽为0.75 'grid.linewidth': 0.75, #网格线宽为0.75 'lines.linewidth': 1.0, #绘图线宽1.0 'lines.markersize': 3.0, #散点的大小3.0 'patch.linewidth': 1.0, #路径线宽1.0 'xtick.major.width': 0.75, #下面这是主副刻度线的宽度 'ytick.major.width': 0.75, 'xtick.minor.width': 0.75, 'ytick.minor.width': 0.75, 'xtick.major.size': 2, 'ytick.major.size': 2, 'xtick.minor.size': 1.2, 'ytick.minor.size': 1.2, 'font.size': 7.5,#字号 'axes.labelsize': fontsize,#xy坐标轴的字号 'axes.titlesize': fontsize, 'xtick.labelsize': fontsize, 'ytick.labelsize': fontsize, 'legend.fontsize': fontsize, 'legend.title_fontsize': fontsize } return conText #这个函数是用来设置图片的大小,和word的印刷尺寸匹配,厘米和inch之间的换算关系是2.54,此外重新设置了坐标轴标题。 def posterProcess(g,w,h,xlab,ylab): inch_cm=2.54 realFigHeight=w/inch_cm realFigWidth=h/inch_cm g.figure.set_size_inches(realFigHeight,realFigWidth)#修改 g.set_axis_labels(xlabel=xlab,ylabel=ylab) #要在darkgrid上面设置刻度ticks #这里是设置axes背景颜色跟ticks可见。 yf_sns_axes_style={ 'xtick.bottom': True, 'ytick.left': True, 'axes.facecolor': '#EAEAF2', } #常用的单位可以放在这里,要不然每次都要手写就很烦! myUnits={ #距离 "米":'/(m)', "厘米":'/(cm)', "米秒速":'/(m·$\mathregular{s^{-1}}$)', "公里时速":'/(km·$\mathregular{h^{-1}}$)', } 下面来画图 #第一步:设置主题 sns.set_theme(context=yf_sns_context(7.5),style="darkgrid",font="Microsoft YaHei",palette=sns.color_palette("tab10"),rc=yf_sns_axes_style) # 第二步:载入数据 penguins = sns.load_dataset("penguins") # 第三步:绘图 g = sns.jointplot(data=penguins, x="bill_length_mm", y="bill_depth_mm", hue="species", kind="kde",) # 第四部:设置坐标轴标题和单位 xlab="距离"+myUnits["米秒速"] ylab="速度"+myUnits["公里时速"] # 第五步:调整图的横纵尺寸,几厘米就填几,下面这个例子就是10cm和7cm,xlab和ylab就是第四步的标题。 posterProcess(g,10,7,xlab,ylab) # 第六步:看情况设置图例 sns.move_legend( g.figure.axes[0], "lower center", bbox_to_anchor=(0.85, 0), ncol=1, title=None, frameon=False, ) g.figure g.savefig("test.png", dpi=300) #注意,jointplot比较特别,一个对象g中有三个axes,要调整图例只有选择第0个元素。单图就没有这个顾虑了。

请添加图片描述

下面再来画一张图(上面主题一次设置,以后反复使用) tips = sns.load_dataset("tips") g=sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips,palette=sns.color_palette("Set1",10)[2:4]) xlab="距离"+myUnits["米秒速"] ylab="速度"+myUnits["公里时速"] posterProcess(g,7,6,xlab,ylab) #下面这个是移动图例的位置 sns.move_legend( g,"lower center", bbox_to_anchor=(0.5, 1), ncol=2, title=None, frameon=False, ) g.figure.savefig("test2.jpg",dpi=300,bbox_inches = 'tight')

请添加图片描述

seaborn还可以直接用来设置matplotlib的主题,plt会自动sns.set_theme()的内容 import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # 中文字体设置-黑体 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 x = np.arange(-2*np.pi, 2*np.pi, 0.01) y1 = np.sin(x) y2 = np.cos(x) plt.figure(figsize=(10/2.54, 7/2.54),dpi=100) plt.plot(x, y1, label='$sinx$',color=sns.color_palette("Set1",10)[2]) plt.plot(x, y2, label='$cosx$',color=sns.color_palette("Set1",10)[3]) plt.legend(loc='upper right') plt.xlim(-2*np.pi-1, 2*np.pi+3) plt.xticks([-2*np.pi, -np.pi, 0, np.pi, 2*np.pi], ['$-2\pi$', '$-\pi$', '$0$', '$\pi$', '$2\pi$'],fontsize=7.5) plt.title('三角-函数',fontsize=7.5) plt.xlabel('横坐标') plt.ylabel('纵坐标') plt.axhline(y=0, c='black') plt.savefig('test3.jpg',dpi=300) plt.show()

在这里插入图片描述

在做图的时候由于设置了长宽,于是在word中插入图片之后,只要图片的长宽(cm)跟绘图时候填的参数一样,那么字号就跟word中相应的字号相匹配,比如先前在程序中设置的7.5那么就对应word中的英文字符7.5,也就是六号字。中英文字号对应表自行百度。下面是插入word的效果。 在这里插入图片描述

有什么特殊需要,大家根据自己的情况改进即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有