(折线图的基础绘制方法与函数参数等内容直接跳过,下面为对于原有知识的补充。)
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
主要参数简介:
x: 需要绘制的line中点的在x轴上的取值
y: 需要绘制的line中点的在y轴上的取值
yerr: 指定y轴水平的误差
xerr: 指定x轴水平的误差
fmt: 指定折线图中某个点的颜色,形状,线条风格,例如‘co–’
ecolor: 指定error bar的颜色
elinewidth: 指定error bar的线条宽度
fig = plt.figure()
x = np.arange(10)
y = 2.5 * np.sin(x / 20 * np.pi)
yerr = np.linspace(0.05, 0.2, 10)
plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)');
matplotlib.pyplot.hist(x,bins=None,range=None, density=None, bottom=None, histtype='bar', align='mid', log=False, color=None, label=None, stacked=False, normed=None)
主要参数简介:
x: 数据集,最终的直方图将对数据集进行统计
bins: 统计的区间分布
range: tuple
, 显示的区间,range在没有给出bins时生效
density: bool
,默认为false
,显示的是频数统计结果,为True
则显示频率统计结果,这里需要注意,频率统计结果=区间数目/(总数*区间宽度),和normed
效果一致,官方推荐使用density
histtype: 可选{'bar'
, 'barstacked'
, 'step'
, 'stepfilled'
}之一,默认为bar
,推荐使用默认配置,step
使用的是梯状,stepfilled
则会对梯状内部进行填充,效果与bar类似
align: 可选{'left'
, 'mid'
, 'right'
}之一,默认为'mid'
,控制柱状图的水平分布,left
或者right
,会有部分空白区域,推荐使用默认
log: bool
,默认False
,即y坐标轴是否选择指数刻度
stacked: bool
,默认为False
,是否为堆积状图
x=np.random.randint(0,100,100) #生成[0-100)之间的100个数据,即 数据集
bins=np.arange(0,101,10) #设置连续的边界值,即直方图的分布区间[0,10),[10,20)...
plt.hist(x,bins,color='fuchsia',alpha=0.5)#alpha设置透明度,0为完全透明
plt.xlabel('scores')
plt.ylabel('count')
plt.xlim(0,100); #设置x轴分布范围 plt.show()
matplotlib.pyplot.bar(left, height, alpha=1, width=0.8, color=, edgecolor=, label=, lw=3)
主要参数简介:
left: x轴的位置序列,一般采用range函数产生一个序列,但是有时候可以是字符串
height: y轴的数值序列,也就是柱形图的高度,一般就是我们需要展示的数据;
alpha: 透明度,值越小越透明
width: 为柱形图的宽度,一般这是为0.8即可;
color或facecolor: 柱形图填充的颜色;
edgecolor: 图形边缘颜色
label: 解释每个图像代表的含义,这个参数是为legend()函数做铺垫的,表示该次bar的标签
# bar绘制柱状图
y = range(1,17)
plt.bar(np.arange(16), y, alpha=0.5, width=0.5, color='yellow', edgecolor='red', label='The First Bar', lw=3);
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)
主要参数简介:
x: 契型的形状,一维数组。
explode: 如果不是等于None
,则是一个len(x)数组,它指定用于偏移每个楔形块的半径的分数。
labels: 用于指定每个契型块的标记,取值是列表或为None
。
colors: 饼图循环使用的颜色序列。如果取值为None
,将使用当前活动循环中的颜色。
startangle: 饼状图开始的绘制的角度。
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)
ax1.axis('equal')
matplotlib.pyplot.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=, filternorm=1, filterrad=4.0, imlim=, resample=None, url=None, *, data=None, **kwargs)
使用imshow画图时首先需要传入一个数组,数组对应的是空间内的像素位置和像素点的值,interpolation参数可以设置不同的差值方法,具体效果如下。
methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16',
'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric',
'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos']
grid = np.random.rand(4, 4)
fig, axs = plt.subplots(nrows=3, ncols=6, figsize=(9, 6),
subplot_kw={'xticks': [], 'yticks': []})
for ax, interp_method in zip(axs.flat, methods):
ax.imshow(grid, interpolation=interp_method, cmap='viridis')
ax.set_title(str(interp_method))
plt.tight_layout();
参数简介:
figsize 参数可以指定整个画布的大小
sharex 和 sharey 分别表示是否共享横轴和纵轴刻度
tight_layout 函数可以调整子图的相对大小使字符不会重叠
fig, axs = plt.subplots(2, 5, figsize=(10, 4), sharex=True, sharey=True)
fig.suptitle('样例1', size=20)
for i in range(2):
for j in range(5):
axs[i][j].scatter(np.random.randn(10), np.random.randn(10))
axs[i][j].set_title('第%d行,第%d列'%(i+1,j+1))
axs[i][j].set_xlim(-5,5)
axs[i][j].set_ylim(-5,5)
if i==1: axs[i][j].set_xlabel('横坐标')
if j==0: axs[i][j].set_ylabel('纵坐标')
fig.tight_layout()
上述过程是基于subplots()函数的写法,我们还可以基于subplot()进行定义:
plt.figure()
# 子图1
plt.subplot(2,2,1)
plt.plot([1,2], 'r')
# 子图2
plt.subplot(2,2,2)
plt.plot([1,2], 'b')
#子图3
plt.subplot(224) # 当三位数都小于10时,可以省略中间的逗号,这行命令等价于plt.subplot(2,2,4)
plt.plot([1,2], 'g');
N = 150
r = 2 * np.random.rand(N)
theta = 2 * np.pi * np.random.rand(N)
area = 200 * r**2
colors = theta
plt.subplot(projection='polar')
plt.scatter(theta, r, c=colors, s=area, cmap='hsv', alpha=0.75);
以上便是本人在有关Matplotlib中可视化与绘图基础的学习中的全部内容。如果您在阅读过程中发现了本文的不足或者错误,请您在下方留言以批评指正,本人一定及时修改。感谢您阅读本文!