matplotlib.pyplot
- 0.经验与教训
-
- 0.1 升级第三方的包
- 1、pyplot 是什么?
- 2、实例展示
- 3、参数
- 3.1 plt.subplots()
- 4、多实例展示
-
- 4.1 条形图
- 参考文献
总是一次次的用到的时候再在网上现搜,所以打算这次整理一下,方便自己和有需要的人的使用。
0.经验与教训
0.1 升级第三方的包
个别使用时可能会出现问题,所以最好升级一下
python -m pip install -U matplotlib
如果该命令失败,提示咩有访问权限啥的,使用下面的命令:
python -m pip install --user -U matplotlib
1、pyplot 是什么?
是通过命令在python中进行绘图和数据展示的一个函数。
比如,我们现在有很多点,可以通过plt进行展示这些点的分布。
#导入库
import numpy as np
import matplotlib.pyplot as plt
#生成数据集:可以用来分类任务,可以用来回归任务,可以用来聚类任务,用于流形学习的,用于因子分解任务的
#用于分类任务和聚类任务的:这些函数产生样本特征向量矩阵以及对应的类别标签集合
#make_blobs:多类单标签数据集,为每个类分配一个或多个正太分布的点集
from sklearn.datasets import make_blobs as mb
# X为样本特征,Y为样本簇类别
X,y=mb(n_samples=100, #总的点数,平均的分到每个clusters中,共100个样本。
n_features=2, #每个样本的特征维度,每个样本2个特征。
centers=[[-1,-1], [0,0], [1,1], [2,2]], #产生的中心点的数量, or 固定中心点位置,共4个簇,簇中心在[-1,-1], [0,0],[1,1], [2,2]。
cluster_std=[0.4, 0.2, 0.2, 0.2], #clusters的标准差, 簇方差分别为[0.4, 0.2, 0.2]。
random_state =9 #如果是int,random_state作为随机数产生器的seed; 如果是RandomState对象, random_state是随机数产生器; 如果是None, RandomState 对象是随机数产生器通过np.random.
)
#展示样本
plt.scatter(X[:, 0], X[:, 1], marker='o')
plt.show()
结果如下图:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzMGRNRTRE5EMRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5MTNwMTNwETM0ETNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
我们可以发现,通过简单的几条命令,就可以把数据的分布展示出来。
2、实例展示
def picture(id_money_dict):
'''
尝试将数据图表化
'''
x_list=[]
y_list=[]
for k,v in sorted(id_money_dict.items(),key=lambda d:d[1],reverse=True):
x_list.append(k)
y_list.append(v)
'''
绘图,第一个参数是x轴的数据,第二个参数是y轴的数据,
第三个参数是柱子的大小,默认值是1(值在0到1之间),
color是柱子的颜色,alpha是柱子的透明度
'''
plt.rcParams['figure.figsize'] = (10.0, 8.0) # 显示图像的最大范围
plt.rcParams['font.sans-serif'] =['SimHei']#一种中文字体,可以用来显示中文标题
plt.rcParams['axes.unicode_minus'] = False
plt.bar(x_list, y_list, 0.4, color='r', alpha = 0.8)
# 添加x,y轴标签
plt.xlabel('人员ID')
plt.ylabel('余额')
# 添加标题
plt.title('1000天后社会财富分布')
# 设置X,Y轴的刻度范围
plt.xlim([0,10000])
plt.ylim([-50,250])
# 显示网格
plt.grid(True)
# 显示图形
plt.show()
3、参数
这里我们将汇总各个参数和方法,具体运用会在下一个环节中实例进行各个图形展示。
以下展示可能不分先后哈哈哈哈哈哈哈哈哈哈哈
3.1 plt.subplots()
plt.subplots()是一个函数,返回一个包含figure和axes对象的元组。因此,使用fig,ax = plt.subplots()将元组分解为fig和ax两个变量。
官网提供的用法指南如下:
matplotlib.pyplot.subplots(nrows=1, ncols=1, *, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)
nrows,ncols: int,默认值:1 子图网格的行数/列数。
sharex,sharey: bool或{'none','all','row','col'},默认值:False 控制x(sharex)或y(sharey)轴之间的属性共享:
真实或“all”:x轴或y轴将在所有子图中共享。
错误或'none':每个子图的x轴或y轴将是独立的。
'row':每个子图行将共享一个x轴或y轴。
'col':每个子图列将共享一个x轴或y轴。
当子图沿一列具有共享的x轴时,将仅创建底部子图的x刻度标签。类似地,当子图沿行具有共享的y轴时,仅创建第一列子图的y刻度标签。若要稍后打开其他子图的刻度标签,请使用tick_params。
当子图的共享轴包含单位时,调用 set_units将使用新单位更新每个轴
squeeze:bool, default: True
如果为True,则从返回的数组中挤出额外的尺寸Axes:
如果仅构造一个子图(nrows = ncols = 1),则返回的单个Axes对象将作为标量返回。
对于Nx1或1xM子图,返回的对象是Axes对象的1D numpy对象数组。
对于NxM,将N> 1和M> 1的子图作为2D数组返回。
如果为False,则完全不进行压缩:返回的Axes对象始终是包含Axes实例的2D数组,即使最终它是1x1。
subplot_kw: dict,可选
带有传递给add_subplot用于创建每个子图的调用的关键字的字典 。
gridspec_kw: dict,可选
具有传递给GridSpec 用于创建子图放置的网格的构造函数的关键字的字典。
** fig_kw
所有其他关键字参数都传递给 pyplot.figure调用。
fig:Figure
ax:axes.Axes or array of Axes
例子展示,代码来自官网:
import matplotlib.pyplot as plt
import numpy as np
# First create some toy data:
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
# Create just a figure and only one subplot
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
4、多实例展示
4.1 条形图
参考文献
本文是经过对以下大佬的学习才可以搞出来的,再次对他们表示感谢。
- 1.知乎大佬的文章 刘毛毛 matplotlib.pyplot的使用总结大全(入门加进阶)
- 2.部分代码实例来源于官网https://matplotlib.org/,详细地址附在引用代码前。