Matplotlib的小入门

Matplotlib专门用于开发2D图表(包括3D图表),在日常数据处理中经常需要运用到它,它的用法非常多样,这里记录一些基础用法,算是一个小入门,后面如果有更复杂的画图要求,再进一步学习。
如果有需要绘制某种类型的表格可以访问-->官网文档,下文也会进一步说一下这个网站~


一、实现一个简单的Matplotlib画图

— 以折线图为例

  • matplotlib.pyplot模块
    import matplotlib.pyplot as plt

  • 图形绘制流程:

    • 1.创建画布 -- plt.figure()

      plt.figure(figsize=(), dpi=)
      figsize:指定图的长宽
      dpi:图像的清晰度
      返回fig对象
      
    • 2.绘制图像 -- plt.plot(x, y)

    • 3.显示图像 -- plt.show()

  • 实例如下:

二、认识Matplotlib图像结构

通过了解Matplotlib的图像结构,有利于进一步理解它的画图流程

  • 容器层
    • Canvas:画板
    • Figure:画布
      • 每次使用前,需要实例化,比如plt.figure()
    • axex:坐标系
      -数据的绘图区域
      -辅助显示层
      -比如添加一些标题呀,图例呀...
  • 图像层
    -画的是plot,scatter...

三、基础操作

  • 添加x,y轴刻度

    plt.xticks()
    plt.yticks()
    
  • 添加网格显示

    plt.grid(linestyle="--", alpha=0.5)
    
  • 添加描述信息

     plt.xlabel()
     plt.ylabel()
     plt.title()
    
  • 图像保存

    plt.savefig("路径")
    
  • 画多条线

    直接进行plt.plt(x,z)添加
    
  • 显示图例

    plt.legend(loc="best")
    注意:一定要在plt.plot()里面设置一个label,如果不设置,没法显示
    
  • 多个坐标系显示

    plt.subplots(nrows=, ncols=)
    
  • 代码实例:

------》

点击查看折叠代码
x = range(60)
y = [random.uniform(15, 18) for i in x]
z = x

#1、创建画布

plt.figure(figsize=(8, 4), dpi=80)  #指定画布大小,像素值

#2、绘制图表

plt.plot(x,y,label="SH")
plt.plot(x,z,label="BJ")

#添加x,y轴刻度
x_ticks = ["12:{}".format(i) for i in x]

#plt.xticks(x[::10],x_ticks[::10])
plt.xticks(x[::5])  #第一个参数可以改变刻度大小,这里选择 5 为刻度间隔


#添加一些细节

plt.grid(linestyle='--', alpha=0.5)  #网格
plt.xlabel("Time(s)")  
plt.ylabel("Volt")
plt.title("Temperature")

plt.legend()

#图像保存
#plt.savefig("test.png")


生成的图

四、官网文档的妙用



Matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。官网文档这里面有很多类型的图表还有相应代码,有需要可以复制粘贴,修改一下为我所用


比如:柱状图怎么画

点击查看折叠代码
N = 5
menMeans = (20, 35, 30, 35, -27)
womenMeans = (25, 32, 34, 20, -25)
menStd = (2, 3, 4, 1, 2)
womenStd = (3, 5, 2, 3, 3)
ind = np.arange(N)    # x轴刻度

fig, ax = plt.subplots() #多个子图

p1 = ax.bar(ind, menMeans,yerr=menStd, label='Men') #柱状图
p2 = ax.bar(ind, womenMeans,bottom=menMeans, yerr=womenStd, label='Women')

#添加细节信息
ax.axhline(0, color='grey', linewidth=0.8)

ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ['G1', 'G2', 'G3', 'G4', 'G5'])
ax.legend()


plt.show()


这里记录一下常见图图形的API
  • 折线图:以折线的上升或下降来表示统计数量的增减变化的统计图

    • 特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
      api:plt.plot(x, y)
  • 散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

    • 特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
      api:plt.scatter(x, y)
  • 柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。

    • 特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)
      api:plt.bar(x, width, align='center', **kwargs)

      Parameters:    
      x : 需要传递的数据
      
      width : 柱状图的宽度
      
      align : 每个柱状图的位置对齐方式
          {‘center’, ‘edge’}, optional, default: ‘center’
      
      **kwargs :
      color:选择柱状图的颜色
      
  • 直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。

    • 特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
      api:matplotlib.pyplot.hist(x, bins=None)

      Parameters:    
      x : 需要传递的数据
      bins : 组距
      
  • 饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

    • 特点:分类数据的占比情况(占比)
      api:plt.pie(x, labels=,autopct=,colors)

      Parameters:  
      x:数量,自动算百分比
      labels:每部分名称
      autopct:占比显示指定%1.2f%%
      colors:每部分颜色
      

参考文献

1、Matplotlib简介、结构以及绘制基本图像的代码
2、《Pthon科学计算》-张若愚

posted @ 2022-04-08 17:53  朝南烟  阅读(65)  评论(0编辑  收藏  举报
body { color: #000; background-color: #e6e6e6; font-family: "Helvetica Neue",Helvetica,Verdana,Arial,sans-serif; font-size: 12px; min-height: 101%; background: url(https://images.cnblogs.com/cnblogs_com/caolanying/1841633/o_2009041…ly1geq8oc9owbj21hc0u0th5.jpg) fixed; } #home { margin: 0 auto; opacity: 0.8; width: 65%; min-width: 1080px; background-color: #fff; padding: 30px; margin-top: 50px; margin-bottom: 50px; box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3); }