简介:
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。在数据分析中尤为重要
安装方式:
这里我使用清华大学的镜像进行安装(当然你也可以选择其他镜像):pip install matplotlib --index https://pypi.mirrors.ustc.edu.cn/simple/
基础函数及用法:
函数 | 描述 |
---|---|
plt.title() | 为产生的图像设置主标题 |
plt.xlabel() | 为x轴设置标题 |
plt.ylabel() | 为y轴设置标题 |
plt.plot() | 根据参数生成图像 |
plt.show() | 显示所生成的图像 |
plt.xlim(l,r) | 设置x轴的左右区间,None表示无限制 |
plt.ylim(l,r) | 设置y轴的左右区间,None表示无限制 |
折线图的绘制:
plt.plot(x,y)用来生成折线图:x表示x轴的坐标,y表示对应y轴的坐标
描述:画出y = 3x+2的图像
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(1,10)
y = 3*x + 2 #函数y = 3x+2
plt.title("Demo") #设置主标题
plt.xlabel("This is x") #设置x轴标题
plt.ylabel("This is y") #设置y轴标题
plt.plot(x,y) #按照上述函数生成
plt.show()
生成图像:
散点图的绘制:
plt.scatter(x,y,s,c,marker):x,y表示数据,要求长度相等且必须为向量,s表示散点大小,c表示散点颜色,marker表示散点形式
import matplotlib.pyplot as plt
import numpy as np
x = np.random.normal(0,1,150) #随机生成两组数据
y = np.random.normal(0,1,150)
plt.scatter(x,y) #生成散点图
plt.show()
生成图像:
高级散点绘制:
import matplotlib.pyplot as plt
import numpy as np
fig,ax = plt.subplots()#后文有详细讲解
for color in ['purple','green','yellow']:
x = np.random.normal(0,1,150)
y = np.random.normal(0,1,150)
ax.scatter(x,y,c = color,label = color) #c表示散点颜色,label表示图例颜色
plt.legend() #生成图例
plt.show()
图像生成:
相关样式:
条形图的绘制:
Pyplot子模块提供bar()函数来生成条形图。以下实例生成两组 x 和 y 数组的条形图。
from matplotlib import pyplot as plt
x = [5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [6,15,7]
plt.bar(x, y, align = 'center')
plt.bar(x2, y2, color = 'g', align = 'center') #条形图颜色为绿色并居中
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()
生成图像:
直方图的绘制:
plt.hist() 函数是数据的频率分布的图形表示。 水平尺寸相等的矩形对应于类间隔,称为 bin,变量 height 对应于频率。plt.histogram()函数将输入数组和 bin 作为两个参数。 bin 数组中的连续元素用作每个 bin 的边界。
from matplotlib import pyplot as plt
import numpy as np
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
plt.hist(a, bins = [0,20,40,60,80,100])
plt.title("Histogram")
plt.show()
生成图像:
直方图高级用法:
histtype参数说明:
bar是传统的条形直方图。如果给定多个数据,则条并排排列。
barstacked是一种条形直方图,其中多个数据相互叠加。
step生成默认为未填充的线条图。
stepfilled生成默认填充的线条图。
import matplotlib.pyplot as plt
import numpy as np
fig,ax = plt.subplots(2,2)
x = np.random.randn(1000, 3)
colors = ['red','blue','yellow']
ax[0][0].hist(x,10,density = True,histtype = 'bar',color = colors,label = colors)
ax[0][0].set_title("Bars with legend")
plt.legend(prop={'size': 8})
ax[0][1].hist(x,10,density = True,histtype = 'bar',stacked = True)
ax[0][1].set_title('Stacked Bar')
ax[1][0].hist(x, 10, histtype='step', stacked=True)
ax[1][0].set_title('Stack Step (unfilled)')
x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]]
ax[1][1].hist(x_multi, 10, histtype='bar')
ax[1][1].set_title('Different Sample Sizes')
plt.tight_layout() #会自动调整子图参数,使它填充整个图像区域,避免文字重合
plt.show()
#代码参考:https://blog.csdn.net/qq_38251616/article/details/103802310
图像生成:
subplot()和subplots():
subplots():
将多组数据放到一张图显示的操作
fig, ax = plt.subplots()
subplots返回两个参数,fig:matplotlib.figure.Figure 对象,ax:子图对象( matplotlib.axes.Axes)
subplots(2,3)表示生成2*3的网格,可以调用ax[i,j]进行调用,在网格的不同位置生成图像
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,10)
fig,ax = plt.subplots()
for i in range(10):
ax.plot(x+i)
plt.show()
生成图像:
subplot:
subplot(n,m,k)在生成的n*m个网格的第k(从第一行第一列开始依次计数)个位置绘图
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,10)
for i in range(1,7):
plt.subplot(2,3,i) #2*3的网格,第i个位置
plt.plot(x+i)
plt.show()
生成图像:
实例1:
描述:在一张图中画出正弦余弦函数
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(1,10)
siny = np.sin(x)
cosy = np.cos(x)
plt.subplot(2,1,1)#生成一个2*1的网络,激活第一张图
plt.title("Sin x")
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x,siny)
plt.subplot(2,1,2)#激活第二张图
plt.title("Cos x")
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x,cosy)
plt.show()
生成图像:
英文参考文档:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.hist.html?highlight=hist#matplotlib.pyplot.hist
- 本文链接:http://yoursite.com/2020/04/08/Python-Matplotlib%E5%BA%93/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub IssuesGitHub Discussions