python_matplotlib基础教程

 

Matplotlib 教程

  Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

  Matplotlib 可以用来绘制各种静态,动态,交互式的图表。

  Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。

  Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。

  安装 matplotlib 库:

python3 -m pip install -U matplotlib

一、Matplotlib Pyplot

  Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

  Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表

  Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生新的图像,在图像中产生新的绘图区域等等。

  plot() 用于画图它可以绘制点和线,语法格式如下:

# 画单条线
plot([x], y, [fmt], *, data=None, **kwargs)
# 画多条线
plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
参数说明: x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。 fmt:可选,定义基本格式(如颜色、标记和线条样式)。 **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

 

二、Matplotlib 绘图标记

绘图过程如果我们想要给坐标自定义一些不一样的标记,就可以使用 plot() 方法的 marker 参数来定义。

  1、marker 可以定义的符号如下

标记 符号 描述
"." m00
"," m01 像素点
"o" m02 实心圆
"v" m03 下三角
"^" m04 上三角
"<" m05 左三角
">" m06 右三角
"1" m07 下三叉
"2" m08 上三叉
"3" m09 左三叉
"4" m10 右三叉
"8" m11 八角形
"s" m12 正方形
"p" m13 五边形
"P" m23 加号(填充)
"*" m14 星号
"h" m15 六边形 1
"H" m16 六边形 2
"+" m17 加号
"x" m18 乘号 x
"X" m24 乘号 x (填充)
"D" m19 菱形
"d" m20 瘦菱形
"|" m21 竖线
"_" m22 横线
0 (TICKLEFT) m25 左横线
1 (TICKRIGHT) m26 右横线
2 (TICKUP) m27 上竖线
3 (TICKDOWN) m28 下竖线
4 (CARETLEFT) m29 左箭头
5 (CARETRIGHT) m30 右箭头
6 (CARETUP) m31 上箭头
7 (CARETDOWN) m32 下箭头
8 (CARETLEFTBASE) m33 左箭头 (中间点为基准)
9 (CARETRIGHTBASE) m34 右箭头 (中间点为基准)
10 (CARETUPBASE) m35 上箭头 (中间点为基准)
11 (CARETDOWNBASE) m36 下箭头 (中间点为基准)
"None", " " or ""   没有任何标记
'$...$' m37 渲染指定的字符。例如 "$f$" 以字母 f 为标记。

  2、线类型:线的类型可以使用 linestyle 参数来定义,简写为 ls

        '‐' 实线,'‐‐' 破折线,'‐.' 点划线,':' 虚线。

    线的颜色可以使用 color 参数来定义,

 

    线的宽度可以使用 linewidth 参数来定义,简写为 lw,值可以是浮点数,如:12.05.67 等。  

  3、fmt 参数:fmt 参数定义了基本格式,如标记、线条样式和颜色。


      #fmt = '[marker][line][color]'

import
matplotlib.pyplot as plt import numpy as np ypoints = np.array([6, 2, 13, 10]) plt.plot(ypoints, 'o:r') plt.show()

   4、使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签

    5、使用 title() 方法来设置标题

   6、使用 pyplot 中的 grid() 方法来设置图表中的网格线

    grid() 方法语法格式如下:

matplotlib.pyplot.grid(b=None, which='major', axis='both', )

  参数说明:

  • b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true。
  • which:可选,可选值有 'major'、'minor' 和 'both',默认为 'major',表示应用更改的网格线。
  • axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x' 或 'y',分别表示两个方向,x 轴方向或 y 轴方向。
  • **kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度。

  

三、折线图

  使用 pyplot 中的 plot()方法来绘制散点图。

import numpy as np
import matplotlib.pyplot as plt



y = np.array([1,3,4,6,7,9,11,5,8])
y2 = np.array([16,18,15,8,5,11,12])

plt.plot(y,'*:b',linestyle= '-.',linewidth='1')
plt.xlabel('Xname')#设置x轴名字
plt.ylabel('Yname')
plt.title('title')#设置标题 
plt.grid(color = 'r', linestyle = '--', linewidth = 0.5)#设置网格线
plt.show()#显示

 

四、散点图

  使用 pyplot 中的 scatter() 方法来绘制散点图。

  scatter() 方法语法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, 
vmin=None, vmax=None, alpha=None, linewidths=None,
 *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

  参数说明:

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 'o'。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

   例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
plt.subplot(2, 2, 1)
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
plt.scatter(x, y, s=sizes,c=colors,marker='*',alpha=0.5)

 

五、柱形图

  使用 pyplot 中的 bar() 方法来绘制柱形图。

  bar() 方法语法格式如下:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

  参数说明

x:浮点型数组,柱形图的 x 轴数据。

height:浮点型数组,柱形图的高度。

width:浮点型数组,柱形图的宽度。

bottom:浮点型数组,底座的 y 坐标,默认 0。
align:柱形图与 x 坐标的对齐方式,
'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。
    要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'
**kwargs::其他参数。

  例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.array(['张三','李四','王五','赵柳','王麻子','张无忌','赵敏','金毛狮王'])
heights= np.array( [1,2,4,5,6,4,3,1])
colors = np.array(['red','blue','green'])

plt.bar(x=x,height=heights,width=0.3,color=colors,align='edge')
plt.show()

 

六、扇形图

  使用 pyplot 中的 pie() 方法来绘制饼图。

  pie() 方法语法格式如下:

matplotlib.pyplot.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)[source]

  参数说明:

x:浮点型数组,表示每个扇形的面积。

explode:数组,表示各个扇形之间的间隔,默认值为0。

labels:列表,各个扇形的标签,默认值为 None。

colors:数组,表示各个扇形的颜色,默认值为 None。

autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。

labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。

pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。

shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。

radius::设置饼图的半径,默认为 1。

startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。

counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。

wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。
        例如:wedgeprops
={'linewidth':5} 设置 wedge 线宽为5。 textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。 center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。 frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。 rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。

  例如:

import matplotlib.pyplot as plt
import numpy as np

y = np.array([20,15, 25, 25, 15])

plt.pie(y,
        labels=['guitar','saxophone','piano','violin','others'], # 设置饼图标签
        colors=["#d5695d",'#852625', "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
        explode=(0, 0, 0.2, 0,0), # 第二部分突出显示,值越大,距离中心越远
        autopct='%.2f%%', # 格式化输出百分比
       )
plt.title("musical instruments") # 设置标题
plt.show()

 

七、绘制多图

  使用subplot()函数绘制多个子图

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

  以上函数将整个绘图区域分成 nrows 行和 ncols 列,编号可以通过参数 index 来设置。

设置 numRows = 1,numCols = 2,就是将图表绘制成 1x2 的图片区域, 对应的坐标为:
  (1, 1), (1, 2)
plotNum =
1, 表示的坐标为(1, 1), 即第一行第一列的子图。 plotNum = 2, 表示的坐标为(1, 2), 即第一行第二列的子图。

  例如:

import numpy as np
import matplotlib.pyplot as plt

# plot1
y = np.array([1, 3, 4, 6, 7, 9, 11, 5, 8])
plt.subplot(3, 3, 5)
plt.plot(y, '*:b', linestyle='-.')
plt.title('plot1')

# plot2
y2 = np.array([16, 18, 15, 8, 5, 11, 12])
plt.subplot(3, 3, 9)
plt.plot(y2, 'r:s', linestyle='-.')
plt.title('plot2')

plt.show()

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python_matplotlib基础教程 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • pyhton_Pandas教程

    Pandas 是 Python 语言的一个扩展程序库,用于数据分析。   Pandas 是一个开放源码、BSD 许可的库,提供高性能、易于使用的数据结构和数据分析工具。   Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。   Pandas 一个强大的分析结构化数据…

    Python开发 2023年4月2日
    00
  • scrapy框架爬虫

      一、什么是scrapy?   Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.     其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associate…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部