python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围

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()

python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围_第1张图片

设置axis=‘x’

plt.grid(axis="y")
plt.show()

python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围_第2张图片

设置网格的颜色

plt.grid(c='r')  # 设置为红色
plt.show()

python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围_第3张图片

设置网格的形状

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()

这个时候会出现一个灰色的版面
如下图所示:
python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围_第4张图片

如果我们想要白色的背景,我们就可以像下面这样处理

import seaborn as sns

sns.set(style="white")

得到的就是下面这个样子的图片

python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围_第5张图片

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程 https://www.cbedai.net/chichoxian


Reference

  1. https://zhuanlan.zhihu.com/p/27435863
  2. https://www.zhihu.com/question/59860990/answer/955884475

python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围_第6张图片


无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程 https://www.cbedai.net/chichoxian

你可能感兴趣的:(【Python】)