天天看点

matplotlib.pyplot python绘图用法(学习中)0.经验与教训1、pyplot 是什么?2、实例展示3、参数3.1 plt.subplots()4、多实例展示参考文献

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

结果如下图:

matplotlib.pyplot python绘图用法(学习中)0.经验与教训1、pyplot 是什么?2、实例展示3、参数3.1 plt.subplots()4、多实例展示参考文献

我们可以发现,通过简单的几条命令,就可以把数据的分布展示出来。

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')
           
matplotlib.pyplot python绘图用法(学习中)0.经验与教训1、pyplot 是什么?2、实例展示3、参数3.1 plt.subplots()4、多实例展示参考文献

4、多实例展示

4.1 条形图

参考文献

本文是经过对以下大佬的学习才可以搞出来的,再次对他们表示感谢。

  • 1.知乎大佬的文章 刘毛毛 matplotlib.pyplot的使用总结大全(入门加进阶)
  • 2.部分代码实例来源于官网https://matplotlib.org/,详细地址附在引用代码前。