1. matplotlib 样式的设计
1.1 设置坐标轴的线框
如果我们要设置坐标轴的线宽,我们可以向下面这样做:
import matplotlib.pyplot as plt
###设置坐标轴的粗细
ax=plt.gca();#获得坐标轴的句柄
ax.spines['bottom'].set_linewidth(2);###设置底部坐标轴的粗细
ax.spines['left'].set_linewidth(2);####设置左边坐标轴的粗细
ax.spines['right'].set_linewidth(2);###设置右边坐标轴的粗细
ax.spines['top'].set_linewidth(2)
1.2 设置所画图形的样式,线宽
h=plt.plot(x,y,color='#ff0000',markersize=10.0,marker='o',linestyle='',linewidth=3);
在我们的画图函数里直接设置即可
1.3 字体大小的设置
如果我们想设置我们所画的图片,全局字体的大小,就是设置统一的大小,我们可以这么做:
全局字体的大小设置
matplotlib.rcParams.update({'font.size': 12})
设置坐标刻度字体的大小
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
# 设置坐标标签字体大小
ax.set_xlabel(..., fontsize=20)
ax.set_ylabel(..., fontsize=20)
另外一种方法设置坐标轴的标题的方法
plt.xlabel('x titile',fontsize=13) #添加x轴的名称
plt.ylabel('y title',fontsize=13)
我写论文的时候,刻度的大小和标题的字体大小都会设置为13
1.4 添加画布内容
画布的内容一般包括图表的标题,图表的坐标轴的注释,坐标轴的刻度的 问题
图表的示例解释, 具体的操作如下所示。
plt.title('标题') #添加标题
plt.xlabel('x') #添加x轴的名称
plt.ylabel('y') #添加y轴的名称
plt.xlim((0,1)) #x轴刻度范围
plt.ylim((0,1)) #y轴刻度范围
plt.xticks([0,1,2,3,4]) #x轴的刻度值
plt.yticks([0,1,2,3,4]) #y轴的刻度值
plt.legend(['a','b']) #添加图例
#设置线条宽度,取0-10之间的数值,默认1.5
plt.rcParams['lines.linewidth']=3
#设置线条样式,可取'-','--','-.',':'4种,默认'-'
plt.rcParams['lines.linestyle']='-.'
#设置线条上点的形状,可取'o','D','h','.','S'等20种,默认为None
plt.rcParams['lines.marker']='D'
#设置点的大小,取0-10之间的数值,默认为1
plt.rcParams['lines.markersize']=3
1.5 设置坐标轴的取值范围
# 设置x轴的最大值和最小值
plt.xlim(-200, 200)
# 设置y轴的取值范围
plt.ylim(-200, 200)
1.6 设置坐标轴的网格
产生网格的函数是下面所示
matplotlin.pyplot.grid(b, which, axis, color, linestyle, linewidth, **kwargs)
which : 取值为’major’, ‘minor’, ‘both’。 默认为’major’。看别人说是显示的,我的是Windows7下,用Sublime跑的,minor 只是一个白画板,没有网格,major和both也没看出什么效果,不知道为什么。
axis : 取值为‘both’, ‘x’,‘y’。就是想绘制哪个方向的网格线。不过我在输入参数的时候发现如果输入x或y的时候, 输入的是哪条轴,则会隐藏哪条轴
color : 这就不用多说了,就是设置网格线的颜色。或者直接用c来代替color也可以。
linestyle :也可以用ls来代替linestyle, 设置网格线的风格,是连续实线,虚线或者其它不同的线条。 | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']
linewidth : 设置网格线的宽度
最简单的设置网格的方式如下所示:
import numpy as np
import matplotlib.pyplot as plt
plt.gcf().set_facecolor(np.ones(3)* 240 / 255) # 生成画布的大小
plt.grid() # 生成网格
plt.show()
另外一些其他的设置
设置axis=‘y’
plt.grid(axis="y")
plt.show()
设置axis=‘x’
plt.grid(axis="y")
plt.show()
设置网格的颜色
plt.grid(c='r') # 设置为红色
plt.show()
设置网格的形状
plt.grid(linestyle='-.')
plt.show()
2. seaborn 样式设计
如果我们想要定制seaborn 的样式,我们可以将参数字典传递给axes_style和set_style()的rc参数。注意,只能通过该方法覆盖样式定义的一部分参数。
如果您想要查看包含哪些参数,您可以只调用该函数而不带参数,这将返回当前设置的字典:
sns.axes_style()
{'axes.axisbelow': True,
'axes.edgecolor': 'white',
'axes.facecolor': '#EAEAF2',
'axes.grid': True,
'axes.labelcolor': '.15',
'axes.linewidth': 0.0,
'figure.facecolor': 'white',
'font.family': ['sans-serif'],
'font.sans-serif': ['Arial',
'Liberation Sans',
'Bitstream Vera Sans',
'sans-serif'],
'grid.color': 'white',
'grid.linestyle': '-',
'image.cmap': 'Greys',
'legend.frameon': False,
'legend.numpoints': 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': 'round',
'text.color': '.15',
'xtick.color': '.15',
'xtick.direction': 'out',
'xtick.major.size': 0.0,
'xtick.minor.size': 0.0,
'ytick.color': '.15',
'ytick.direction': 'out',
'ytick.major.size': 0.0,
'ytick.minor.size': 0.0}
例如,你可以向下面这样做:
sns.set_style("darkgrid", {"axes.facecolor": ".9"})
sinplot()
这个时候会出现一个灰色的版面
如下图所示:
如果我们想要白色的背景,我们就可以像下面这样处理
import seaborn as sns
sns.set(style="white")
得到的就是下面这个样子的图片
Reference
-
https://zhuanlan.zhihu.com/p/27435863
-
https://www.zhihu.com/question/59860990/answer/955884475