Python Matplotlib 是一个基于 Python 的 2D 绘图库,能够生成各种静态、道何的数动态、使用视化交互式的创建图表,支持多种输出格式,令人包括图片、惊叹据PDF、否知SVG 等。道何的数Matplotlib 提供了大量的使用视化绘图函数和工具,可以方便地进行数据可视化、统计分析、科学计算等操作。
本文将深入介绍 Python Matplotlib 的使用,包括常用的 API、参数、返回值,以及各种详细的示例代码,帮助读者更好地掌握这个强大的数据可视化工具。
在开始使用 Matplotlib 之前,需要先安装 Matplotlib 库。可以使用 pip 命令进行安装。
pip install matplotlib
安装完成后,在 Python 中导入 Matplotlib 库。
import matplotlib.pyplot as plt
在 Matplotlib 中,可以使用 plot 函数绘制简单的线图。plot 函数的基本语法如下:
plt.plot(x, y, fmt, **kwargs)
其中,x 和 y 分别表示 x 轴和 y 轴的数据,fmt 是一个字符串,用于指定线条的样式,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个简单的示例,用于绘制一条正弦曲线。
import numpy as npimport matplotlib.pyplot as plt# 生成 x 轴和 y 轴数据x = np.linspace(0, 2*np.pi, 100)y = np.sin(x)# 绘制正弦曲线plt.plot(x, y)# 显示图形plt.show()
上述代码中,使用 linspace 函数生成了一个包含 100 个元素的数组,用于表示 x 轴的数据范围。然后使用 sin 函数生成了对应的 y 轴数据,最后调用 plot 函数绘制正弦曲线。
在 Matplotlib 中,可以使用 fmt 字符串指定线条的样式。fmt 字符串可以包含多个参数,用于指定线条的颜色、线型、标记等。下面是一些常用的参数:
在 fmt 字符串中,可以使用这些参数组合出各种不同的线条样式。例如,"ro--" 表示红色圆形虚线,"bs:" 表示蓝色正方形点线等。
下面是一个示例,用于演示不同的线条样式。
import numpy as npimport matplotlib.pyplot as plt# 生成 x 轴和 y 轴数据x = np.linspace(0, 2*np.pi, 100)y1 = np.sin(x)y2 = np.cos(x)# 绘制正弦曲线和余弦曲线plt.plot(x, y1, "r-", label="sin")plt.plot(x, y2, "b--", label="cos")# 添加图例plt.legend()# 显示图形plt.show()
在上述代码中,使用 plot 函数绘制了两条曲线,一条是红色实线的正弦曲线,一条是蓝色虚线的余弦曲线。然后使用 legend 函数添加了图例,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用各种属性设置函数来改变图形的样式,包括标题、坐标轴、标签、颜色、线型等。下面是一些常用的属性设置函数:
下面是一个示例,用于演示如何设置图形属性。
import numpy as npimport matplotlib.pyplot as plt# 生成 x 轴和 y 轴数据x = np.linspace(0, 2*np.pi, 100)y1 = np.sin(x)y2 = np.cos(x)# 绘制正弦曲线和余弦曲线plt.plot(x, y1, color="red", linestyle="--", linewidth=2, label="sin")plt.plot(x, y2, color="blue", linestyle="-.", linewidth=2, label="cos")# 设置标题、标签、数据范围、网格线等属性plt.title("Sin and Cos Curve")plt.xlabel("X Axis")plt.ylabel("Y Axis")plt.xlim(0, 2*np.pi)plt.ylim(-1.2, 1.2)plt.legend()plt.grid()# 显示图形plt.show()
在上述代码中,使用 plot 函数绘制了两条曲线,并通过 color、linestyle、linewidth 等属性设置函数改变了它们的样式。然后使用 title、xlabel、ylabel、xlim、ylim、legend、grid 等属性设置函数添加了标题、标签、数据范围、图例、网格线等属性,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 subplot 函数绘制多个图形。subplot 函数的基本语法如下:
plt.subplot(nrows, ncols, index, **kwargs)
其中,nrows 和 ncols 分别表示图形的行数和列数,index 表示当前图形的位置,从左到右,从上到下逐个编号。
下面是一个示例,用于演示如何绘制多个图形。
import numpy as npimport matplotlib.pyplot as plt# 生成 x 轴和 y 轴数据x = np.linspace(0, 2*np.pi, 100)y1 = np.sin(x)y2 = np.cos(x)# 绘制正弦曲线和余弦曲线plt.subplot(2, 1, 1)plt.plot(x, y1, "r-", label="sin")plt.title("Sin and Cos Curve")plt.legend()plt.subplot(2, 1, 2)plt.plot(x, y2, "b--", label="cos")plt.xlabel("X Axis")plt.ylabel("Y Axis")plt.legend()# 显示图形plt.show()
在上述代码中,使用 subplot 函数分别绘制了两个图形,一个是红色实线的正弦曲线,一个是蓝色虚线的余弦曲线。然后使用 title、xlabel、ylabel、legend 等属性设置函数添加了标题、标签、图例等属性,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 scatter 函数绘制散点图。scatter 函数的基本语法如下:
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None, linewidths=None, edgecolors=None, **kwargs)
其中,x 和 y 分别表示 x 轴和 y 轴的数据,s
继续
表示散点的大小,c 表示散点的颜色,marker 表示散点的形状,cmap 表示颜色映射表,alpha 表示透明度,linewidths 表示边框线宽度,edgecolors 表示边框颜色,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制散点图。
import numpy as npimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(42)x = np.random.randn(100)y = np.random.randn(100)colors = np.random.rand(100)sizes = 1000 * np.random.rand(100)# 绘制散点图plt.scatter(x, y, s=sizes, c=colors, alpha=0.5)# 显示图形plt.show()
在上述代码中,使用 scatter 函数绘制了一个散点图,散点的大小和颜色都是随机生成的。然后使用 alpha 参数设置了散点的透明度,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 bar 函数绘制条形图。bar 函数的基本语法如下:
plt.bar(x, height, width=0.8, bottom=None, align="center", color=None, edgecolor=None, linewidth=None, tick_label=None, **kwargs)
其中,x 表示条形图的横坐标,height 表示条形图的高度,width 表示条形的宽度,bottom 表示条形图的底部位置,align 表示条形的对齐方式,color 表示条形的颜色,edgecolor 表示边框的颜色,linewidth 表示边框的宽度,tick_label 表示条形的标签,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制条形图。
import numpy as npimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(42)x = np.arange(1, 11)y = np.random.randint(1, 10, size=10)# 绘制条形图plt.bar(x, y, width=0.6, align="center", color="red", alpha=0.5)# 添加标签和标题plt.xticks(x, ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"])plt.xlabel("Category")plt.ylabel("Value")plt.title("Bar Chart")# 显示图形plt.show()
在上述代码中,使用 bar 函数绘制了一个条形图,条形的高度和颜色都是随机生成的。然后使用 width、align、color、alpha 等属性设置函数改变了它们的样式。接着使用 xticks、xlabel、ylabel、title 等属性设置函数添加了标签和标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 hist 函数绘制直方图。hist 函数的基本语法如下:
plt.hist(x, bins=None, range=None, density=False, cumulative=False, histtype="bar", align="mid", orientatinotallow="vertical", color=None, label=None, stacked=False, **kwargs)
其中,x 表示直方图的数据,bins 表示直方图的分组数目,range 表示直方图的数据范围,density 表示是否将直方图归一化,cumulative 表示是否绘制累计分布图,histtype 表示直方图的类型,align 表示直方图的对齐方式,orientation 表示直方图的方向,color 表示直方图的颜色,label 表示直方图的标签,stacked 表示是否堆叠直方图,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制直方图。
import numpy as npimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(42)data = np.random.randn(1000)# 绘制直方图plt.hist(data, bins=20, density=True, alpha=0.5, color="red")# 添加标签和标题plt.xlabel("Value")plt.ylabel("Frequency")plt.title("Histogram")# 显示图形plt.show()
在上述代码中,使用 hist 函数绘制了一个直方图,直方图的数据是随机生成的。然后使用 bins、density、alpha、color 等属性设置函数改变了它们的样式。接着使用 xlabel、ylabel、title 等属性设置函数添加了标签和标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 pie 函数绘制饼图。pie 函数的基本语法如下:
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, shadow=False, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, **kwargs)
其中,x 表示饼图的数据,explode 表示饼图中每个扇形块是否分离出来,labels 表示饼图中每个扇形块的标签,colors 表示饼图中每个扇形块的颜色,autopct 表示饼图中每个扇形块的百分比,shadow 表示是否添加阴影效果,startangle 表示起始角度,radius 表示饼图的半径,counterclock 表示是否按逆时针方向绘制饼图,wedgeprops 表示扇形块的属性,textprops 表示文本标签的属性,center 表示饼图的中心位置,frame 表示是否显示图形边框,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制饼图。
import matplotlib.pyplot as plt# 设置数据labels = ["A", "B", "C", "D"]sizes = [15, 30, 45, 10]colors = ["red", "green", "blue", "yellow"]explode = (0, 0.1, 0, 0)# 绘制饼图plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct="%1.1f%%", shadow=True, startangle=90)# 添加标题plt.title("Pie Chart")# 显示图形plt.show()
在上述代码中,使用 pie 函数绘制了一个饼图,饼图的数据、标签、颜色、分离程度等都是手动设置的。然后使用 autopct、shadow、startangle 等属性设置函数改变了它们的样式。最后调用 title 函数添加了标题,调用 show 函数显示图形。
在 Matplotlib 中,可以使用 boxplot 函数绘制箱线图。boxplot 函数的基本语法如下:
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positinotallow=None, widths=None, patch_artist=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, **kwargs)
其中:
下面是一个示例,用于演示如何绘制箱线图。
import numpy as npimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(42)data = np.random.randn(100, 5)# 绘制箱线图plt.boxplot(data, notch=True, sym="r+", vert=False, whis=1.5, widths=0.5, patch_artist=True, medianprops={ "color": "black", "linewidth": 2}, boxprops={ "facecolor": "red", "linewidth": 2}, whiskerprops={ "linewidth": 2}, capprops={ "linewidth": 2})# 添加标签和标题plt.xlabel("Value")plt.ylabel("Category")plt.title("Box Plot")# 显示图形plt.show()
在上述代码中,使用 boxplot 函数绘制了一个箱线图,箱线图的数据是随机生成的。然后使用 notch、sym、vert、whis、widths、patch_artist、medianprops、boxprops、whiskerprops、capprops 等属性设置函数改变了它们的样式。接着使用 xlabel、ylabel、title 等属性设置函数添加了标签和标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 contour 函数绘制等高线图。contour 函数的基本语法如下:
plt.contour(X, Y, Z, levels=None, colors=None, cmap=None, norm=None, alpha=None, linewidths=None, linestyles=None, hatches=None, extend=None, antialiased=None, **kwargs)
其中,X、Y 表示等高线图的网格坐标,Z 表示等高线图的高度,levels 表示等高线图的高度分层,colors 表示等高线图的颜色,cmap 表示颜色映射表,norm 表示颜色映射表的归一化方式,alpha 表示透明度,linewidths 表示等高线图的线宽,linestyles 表示等高线图的线型,hatches 表示等高线图的填充方式,extend 表示颜色映射表的范围,antialiased 表示是否进行抗锯齿处理,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制等高线图。
import numpy as npimport matplotlib.pyplot as plt# 生成网格坐标和高度数据delta = 0.025x = np.arange(-3.0, 3.0, delta)y = np.arange(-3.0, 3.0, delta)X, Y = np.meshgrid(x, y)Z = np.sin(X) * np.cos(Y)# 绘制等高线图plt.contour(X, Y, Z, levels=10, cmap="coolwarm")# 添加颜色条和标题plt.colorbar()plt.title("Contour Plot")# 显示图形plt.show()
在上述代码中,使用 contour 函数绘制了一个等高线图,等高线图的网格坐标和高度数据都是手动设置的。然后使用 levels、cmap 等属性设置函数改变了它们的样式。接着使用 colorbar、title 等属性设置函数添加了颜色条和标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 imshow 函数绘制热力图。imshow 函数的基本语法如下:
plt.imshow(X, cmap=None, norm=None, aspect=None, interpolatinotallow=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, filternorm=1, filterrad=4.0, resample=None, url=None, **kwargs)
其中,X 表示热力图的数据,cmap 表示颜色映射表,norm 表示颜色映射表的归一化方式,aspect 表示热力图的宽高比,interpolation 表示插值方式,alpha 表示透明度,vmin、vmax 表示颜色映射表的范围,origin 表示热力图的坐标原点,extent 表示热力图的坐标范围,filternorm、filterrad 表示滤波器参数,resample 表示重新采样方式,url 表示热力图的 URL,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制热力图。
import numpy as npimport matplotlib.pyplot as plt# 生成随机数据np.random.seed(42)data = np.random.randn(10, 10)# 绘制热力图plt.imshow(data, cmap="coolwarm", interpolation="nearest")# 添加颜色条和标题plt.colorbar()plt.title("Heatmap")# 显示图形plt.show()
在上述代码中,使用 imshow 函数绘制了一个热力图,热力图的数据是随机生成的。然后使用 cmap、interpolation 等属性设置函数改变了它们的样式。接着使用 colorbar、title 等属性设置函数添加了颜色条和标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 polar 函数绘制极坐标图。polar 函数的基本语法如下:
plt.polar(theta, r, **kwargs)
其中,theta 表示极坐标图的角度,r 表示极坐标图的半径,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制极坐标图。
import numpy as npimport matplotlib.pyplot as plt# 生成数据theta = np.linspace(0, 2 * np.pi, 1000)r = np.sin(5 * theta) * np.cos(3 * theta)# 绘制极坐标图plt.polar(theta, r)# 添加标题plt.title("Polar Plot")# 显示图形plt.show()
在上述代码中,使用 polar 函数绘制了一个极坐标图,极坐标图的数据是手动生成的。然后使用 title 等属性设置函数添加了标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 imshow 函数绘制图像。imshow 函数的基本语法如下:
plt.imshow(X, cmap=None, norm=None, aspect=None, interpolatinotallow=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, filternorm=1, filterrad=4.0, resample=None, url=None, **kwargs)
其中,X 表示图像的数据,cmap 表示颜色映射表,norm 表示颜色映射表的归一化方式,aspect 表示图像的宽高比,interpolation 表示插值方式,alpha 表示透明度,vmin、vmax 表示颜色映射表的范围,origin 表示图像的坐标原点,extent 表示图像的坐标范围,filternorm、filterrad 表示滤波器参数,resample 表示重新采样方式,url 表示图像的 URL,**kwargs 是一些可选参数,用于设置图形的属性。
下面是一个示例,用于演示如何绘制图像。
import matplotlib.pyplot as pltimport matplotlib.image as mpimg# 读取图像数据img = mpimg.imread("example.png")# 绘制图像plt.imshow(img)# 添加标题plt.title("Image")# 显示图形plt.show()
在上述代码中,使用 imread 函数读取了一张图像的数据,并使用 imshow 函数绘制了这张图像。然后使用 title 等属性设置函数添加了标题,最后调用 show 函数显示图形。
在 Matplotlib 中,可以使用 animation 模块绘制动画。animation 模块提供了许多用于绘制动画的类和函数,包括 FuncAnimation、ArtistAnimation、animation、FFmpegWriter 等。这些类和函数可以用于创建和保存动画,设置动画的帧数、间隔时间、动画效果等。
下面是一个示例,用于演示如何使用 FuncAnimation 类绘制动画。
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.animation import FuncAnimation# 创建画布和子图fig, ax = plt.subplots()# 设置数据和初始线条x = np.linspace(0, 2 * np.pi, 200)line, = ax.plot(x, np.sin(x))# 定义更新函数def update(frame): line.set_ydata(np.sin(x + frame / 10)) return line,# 创建动画并显示ani = FuncAnimation(fig, update, frames=100, interval=20)plt.show()
在上述代码中,首先创建了一个画布和一个子图。然后设置了数据和初始线条,接着定义了一个更新函数,用于更新线条的数据。最后使用 FuncAnimation 类创建了一个动画,并通过 show 函数显示动画。在创建 FuncAnimation 实例时,需要传入 fig、update、frames 和 interval 等参数,用于指定动画的画布、更新函数、帧数和间隔时间。在更新函数中,需要返回更新后的线条对象,用于动画的绘制。
这个是会动的哦
在 Matplotlib 中,可以使用 mplot3d 模块绘制3D图形。mplot3d 模块提供了许多用于绘制3D图形的类和函数,包括 Axes3D、plot_surface、plot_wireframe、plot_trisurf 等。这些类和函数可以用于创建和保存3D图形,设置3D图形的视角、坐标轴、颜色映射表等。
下面是一个示例,用于演示如何使用 Axes3D 类绘制3D散点图。
import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D# 创建画布和3D子图fig = plt.figure()ax = fig.add_subplot(111, projection="3d")# 生成数据x = np.random.normal(size=100)y = np.random.normal(size=100)z = np.random.normal(size=100)# 绘制3D散点图ax.scatter(x, y, z)# 添加标题和坐标轴标签ax.set_title("3D Scatter Plot")ax.set_xlabel("X")ax.set_ylabel("Y")ax.set_zlabel("Z")# 显示图形plt.show()
在上述代码中,首先创建了一个画布和一个3D子图。然后使用 np.random.normal 函数生成了一些随机数据,接着使用 Axes3D 类创建了一个3D散点图,并通过 scatter 函数绘制了散点图。最后使用 set_title、set_xlabel、set_ylabel、set_zlabel 等属性设置函数添加了标题和坐标
这个3D图可以拖拽哦
责任编辑:姜华 来源: 今日头条 Python数据可视化工具(责任编辑:百科)
皇朝家居(01198.HK)发布公告:年度归母净利同比下降89.2%
新矿资源(01231.HK)年度扭亏为盈至83.1万美元 每股基本及摊薄盈利0.02美分
合丰集团(02320.HK)发布公告:年度公司拥有人应占亏损1.72亿港元