⭐️Python Matplotlib绘图(附:画图代码大全)

⭐️Python Matplotlib绘图(附:画图代码大全)

⭐️Python Matplotlib绘图(附:画图代码大全)

www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

Python Matplotlib各种绘图类型完整总结

一、Matplotlib图像基础知识

Matplotlib是Python中一个强大的绘图库,它可以帮助我们创建各种静态、动态、交互式的图表。从简单的线图到复杂的3D图表,Matplotlib都能轻松应对。

1. Matplotlib函数

1.1 plt.plot() - 绘制线图

plt.plot()是Matplotlib中最基础的函数,用于绘制线图。其接受一组或多组X和Y坐标作为参数,然后生成对应的线图。

import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) plt.show() 
1.2 plt.scatter() - 绘制散点图

plt.scatter()函数用于绘制散点图,它可以展示数据点之间的分布关系。

x = [1, 2, 3, 4, 5] y = [2, 3, 5, 7, 11] plt.scatter(x, y) plt.show() 
1.3 plt.bar() - 绘制柱状图

plt.bar()函数用于绘制柱状图,用于展示分类数据的数值对比。

categories = ['A', 'B', 'C', 'D'] values = [10, 15, 7, 10] plt.bar(categories, values) plt.show() 
1.4 plt.hist() - 绘制直方图

plt.hist()函数用于绘制直方图,用于展示数据的分布情况。

data = [1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4] plt.hist(data, bins=3) plt.show() 
1.5 plt.xlabel()plt.ylabel() - 设置坐标轴标签

plt.xlabel()plt.ylabel()分别用于设置X轴和Y轴的标签。

plt.plot(x, y) plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.show() 
1.6 plt.title() - 设置图表标题

plt.title()函数用于设置图表的标题。

plt.plot(x, y) plt.title('图表标题') plt.show() 
1.7 plt.legend() - 添加图例

当图表中有多个数据系列时,可以使用plt.legend()添加图例,以便区分不同的数据系列。

x = [1, 2, 3, 4, 5] y1 = [2, 4, 6, 8, 10] y2 = [1, 3, 5, 7, 9] plt.plot(x, y1, label='数据系列1') plt.plot(x, y2, label='数据系列2') plt.legend() plt.show() 
1.8 plt.savefig() - 保存图像

使用plt.savefig()可以将生成的图表保存为文件,方便后续使用。

plt.plot(x, y) plt.savefig('my_plot.png') 

2. Matplotlib绘图可自定义样式和属性

Matplotlib提供了丰富的选项来定制图表的样式和属性,包括线条样式、颜色、标记、坐标轴范围、刻度标签等。这些可以通过设置函数的参数来实现。

plt.plot(x, y, color='red', linestyle='--', marker='o') 

在上面的例子中,color参数用于设置线条颜色,linestyle用于设置线条样式,marker用于设置数据点的标记样式。

3. Matplotlib绘图的布局和子图

Matplotlib支持创建复杂的图表布局,包括多个子图(subplot)的排列。

plt.subplot(2, 2, 1) # 创建一个2x2的子图网格,并选择第1个子图 plt.plot(x, y) plt.subplot(2, 2, 2) # 选择第2个子图 plt.scatter(x, y) plt.show() 

4. Matplotlib交互式图表

Matplotlib也支持创建交互式图表,使用户能够与图表进行交互,例如放大、缩小、平移等。虽然Matplotlib本身并不是为了创建高度交互式的图表而设计的,但可以通过结合其他库(如IPython的widgets或Bokeh)来实现更复杂的交互功能。

简单的说,Matplotlib是一个功能强大的Python绘图库,适用于各种数据可视化需求。从简单的线图到复杂的子图布局,Matplotlib都提供了丰富的工具和选项。通过掌握其基础函数和自定义样式属性,我们可以创建出专业且富有吸引力的图表。

除了上述介绍的常用函数和特性外,Matplotlib还有许多其他高级功能和用法等待我们去探索。无论是数据分析师、数据科学家还是研究人员,都可以通过学习和实践Matplotlib来提升自己的数据可视化能力,从而更好地理解和展示数据。

在使用Matplotlib时,建议查阅其官方文档以获取更详细的信息和示例。此外,还可以参考相关的教程和书籍,以加深对Matplotlib的理解和应用。通过不断地练习和实践,我们可以逐渐掌握Matplotlib的精髓,并将其应用于实际的数据分析和可视化工作中。Matplotlib作为一个开源项目,其社区和贡献者也非常活跃。这意味着我们可以轻松找到解决问题的方法和技巧,也可以参与到项目的开发和贡献中。通过与其他用户交流和分享经验,我们可以不断提升自己的技能水平,并为Matplotlib的发展做出贡献。





二、使用Matplotlib绘图


1. Matplotlib的下载、安装与导入

要使用Matplotlib,首先需要确保它已正确安装在Python环境中,也就是 python安装Matplotlib库 。可以通过pip命令进行安装:

pip install matplotlib 

安装完成后,在Python脚本中导入Matplotlib:

import matplotlib.pyplot as plt 

2. Matplotlib的基本绘图流程

Matplotlib的基本绘图流程包括创建画布(Figure)和子图(Axes),绘制数据,添加标签、标题等,以及最终显示或保存图像。

# 创建一个画布和子图 fig, ax = plt.subplots() # 绘制数据 x = [1, 2, 3, 4, 5] y = [2, 3, 5, 7, 11] ax.plot(x, y) # 添加标签和标题 ax.set_xlabel('X轴标签') ax.set_ylabel('Y轴标签') ax.set_title('示例图表') # 显示图像 plt.show() 

3. Matplotlib的图表分类

Matplotlib支持绘制多种类型的图表,包括但不限于:

折线图(Line Plot):用于展示数据随时间或其他连续变量的变化趋势。通过连接数据点形成连续的线条,可以直观地展现数据随时间的变化趋势,帮助用户发现数据中的周期性、趋势或异常值。

柱状图(Bar Chart):用于比较不同类别之间的数量差异。柱状图通过不同高度的矩形来表示不同类别的数据大小,使得比较更为直观和易于理解。

散点图(Scatter Plot):用于展示两个变量之间的关系。通过在坐标平面上绘制数据点,可以观察数据点之间的分布和趋势,从而发现变量之间的相关性或潜在的规律。

饼图(Pie Chart):用于展示数据的组成比例。饼图将数据按照比例划分为不同的扇形区域,可以直观地展示各部分在整体中的占比情况。

直方图(Histogram):用于展示数据的分布情况。直方图通过将数据划分为不同的区间,并统计每个区间内的数据点数量,从而展示数据的分布情况,有助于识别数据的集中、分散和偏态等特征。

等高线图(Contour Plot):用于展示三维数据在二维平面上的投影。等高线图通过绘制不同高度的等值线来表示三维数据的分布和变化趋势,有助于识别数据的峰值、谷值和变化趋势。

雷达图(Radar Chart):又称蜘蛛网图,用于展示多个变量的数据并比较它们之间的相对大小。雷达图通过连接各个变量在极坐标系中的点,形成一个多边形,从而可以直观地比较不同变量之间的差异。

极坐标图(Polar Plot):在极坐标系中绘制数据点或曲线,用于展示与角度和半径相关的数据。极坐标图在处理与方向、旋转或周期性有关的数据时特别有用。

灰度图(Grayscale Image):用于展示图像的灰度信息。灰度图将彩色图像转换为灰度级别,从而突出图像的纹理和结构特征。

热力图(Heatmap):通过颜色来表示数据的大小或密度,常用于展示大量数据的分布情况。热力图可以直观地展示数据之间的关联和趋势,帮助用户发现数据中的规律和模式。

箱线图(Box Plot):用于展示数据的分布情况、中位数、四分位数以及异常值等统计信息。箱线图通过绘制一个矩形箱体和两条线(代表最大值和最小值)来展示数据的分布情况,有助于识别数据的离散程度和潜在问题。

面积图(Area Plot):类似于折线图,但通过填充折线以下或以上的区域来强调数据的大小。面积图适用于展示随时间变化的数量累积情况。

堆叠图(Stacked Plot):将多个数据系列堆叠在一起,以便比较它们的相对大小和贡献。堆叠图有助于展示不同数据系列之间的比例关系和整体趋势。

瀑布图(Waterfall Plot):又称桥形图,用于展示数据的起始值、中间值和结束值,以及它们之间的增减变化。瀑布图有助于识别数据变化的关键点和趋势。

误差棒图(Errorbar Plot):在数据点上添加误差棒来表示数据的不确定性或误差范围。误差棒图有助于评估数据的可靠性和精度。

六边形箱线图(Hexbin Plot):通过将数据点映射到六边形网格中,以颜色或大小表示数据的密度或频率。这种图表类型在处理大量数据时特别有用,可以有效地展示数据的分布情况。

烛台图(Candlestick Chart):常用于金融领域,用于展示股票或其他金融产品的开盘价、收盘价、最高价和最低价等信息。烛台图有助于识别市场的波动情况和趋势。

矢量场图(Quiver Plot):用于展示二维或三维空间中矢量的大小和方向。矢量场图常用于物理、工程等领域,以展示力场、速度场等矢量数据的分布情况。

K线图(K-Line Chart):又称蜡烛图或阴阳线图,是股票市场分析中最常用的一种图表。K线图通过绘制每个交易周期的开盘价、收盘价、最高价和最低价等信息,以直观地展示市场的波动情况和趋势。

3D柱状图(3D Bar Graph)3D折线图(3D Line Plot):在三维空间中展示数据和趋势,使得数据的展示更加立体和直观。这些图表有助于用户更好地理解和分析数据的空间分布和变化趋势。

4. 自定义图表样式

Matplotlib提供了丰富的选项来定制图表的样式,包括线条样式、颜色、标记符号、图例、网格线等。

# 自定义线条样式和颜色 ax.plot(x, y, linestyle='--', color='red') # 添加图例 ax.legend(['数据系列']) # 显示网格线 ax.grid(True) 

5. 交互式图表与动画

除了静态图表,Matplotlib还支持创建交互式图表和动画。通过使用事件处理机制,我们可以添加鼠标悬停提示、点击事件等交互功能。同时,Matplotlib的FuncAnimation类可以用于创建动画效果。

6. 图表保存与导出

创建好图表后,我们可以将其保存为多种格式的图片文件,如PNG、PDF、SVG等。

# 保存图像为PNG文件 plt.savefig('example_chart.png') 





三、Matplotlib画图代码大全


在数据可视化领域,Matplotlib是一个功能强大且广泛使用的Python库。它提供了众多绘图类型,能够帮助研究人员、数据科学家和工程师直观地展示数据的特征和趋势。以下将详细介绍Matplotlib中的画图代码大全:

1. 散点图(Scatter Plot)

散点图用于展示两个变量之间的关系,通过点的分布和密度来反映变量间的相关性和趋势。在Matplotlib中,可以使用scatter函数绘制散点图,并设置点的颜色、大小等属性。实例代码如下:

import matplotlib.pyplot as plt import numpy as np # 生成随机数据 x = np.random.rand(50) y = np.random.rand(50) # 绘制散点图 plt.scatter(x, y, color='blue', marker='o', alpha=0.7, s=50) # 添加标题和轴标签 plt.title('Scatter Plot Example') plt.xlabel('X Axis') plt.ylabel('Y Axis') # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在上面的代码中,我们首先生成了两组随机数x和y作为散点图的数据点。然后,使用scatter函数绘制散点图,并设置了点的颜色为蓝色、标记符号为圆圈、透明度为0.7、点的大小为50。最后,添加了标题和轴标签,并通过show函数显示图形。

2. 折线图(Line Plot)

折线图用于展示数据随时间或其他连续变量的变化趋势。在Matplotlib中,可以使用plot函数绘制折线图,并设置线条样式、颜色等属性。实例代码如下:

import matplotlib.pyplot as plt import numpy as np # 生成数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 绘制折线图 plt.plot(x, y, color='red', linewidth=2.0, linestyle='--') # 添加标题和轴标签 plt.title('Line Plot Example') plt.xlabel('X Axis') plt.ylabel('Y Axis') # 显示网格 plt.grid(True) # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在这个例子中,我们使用linspace函数生成了一个从0到10的等差数列作为x轴数据,并计算了对应的正弦值作为y轴数据。然后,使用plot函数绘制折线图,并设置了线条颜色为红色、线宽为2.0、线条样式为虚线。此外,我们还添加了标题、轴标签,并显示了网格。

3. 直方图(Histogram)

直方图用于展示数据的分布情况,可以直观地看出数据的集中、分散程度以及可能的偏态。在Matplotlib中,可以使用hist函数绘制直方图。实例代码如下:

import matplotlib.pyplot as plt import numpy as np # 生成随机数据 data = np.random.randn(1000) # 绘制直方图 plt.hist(data, bins=30, color='cyan', alpha=0.7, edgecolor='black') # 添加标题和轴标签 plt.title('Histogram Example') plt.xlabel('Value') plt.ylabel('Frequency') # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在这个例子中,我们生成了一组随机正态分布的数据。然后,使用hist函数绘制直方图,并设置了分箱数为30、颜色为青色、透明度为0.7以及边缘颜色为黑色。最后,添加了标题和轴标签,并展示了图形。

4. 条形图(Bar Chart)

条形图用于比较不同类别之间的数据大小,通过将每个类别的数据用矩形条表示并排列在一起来展示。在Matplotlib中,bar函数可以用来绘制条形图,可以设置条形颜色、宽度等属性。以下是条形图的实例代码:

import matplotlib.pyplot as plt import numpy as np # 准备数据 categories = ['Category A', 'Category B', 'Category C', 'Category D'] values = [23, 34, 12, 45] # 绘制条形图 plt.bar(categories, values, color='skyblue', edgecolor='black', width=0.5) # 添加标题和轴标签 plt.title('Bar Chart Example') plt.xlabel('Categories') plt.ylabel('Values') # 显示图形 plt.show() 

在这个例子中,我们定义了四个类别和对应的值。使用plt.bar函数绘制条形图,并设置了颜色为天蓝色、边缘颜色为黑色以及条形宽度为0.5。随后,我们添加了标题和轴标签,最后展示了图形。

5. 散点图(Scatter Plot)

散点图用于展示两个变量之间的关系,通过点的分布和密度来揭示变量间的相关性和趋势。在Matplotlib中,scatter函数可以用来绘制散点图,可以设置点的颜色、大小等属性。以下是散点图的实例代码:

import matplotlib.pyplot as plt import numpy as np # 准备数据 x = np.random.rand(50) y = np.random.rand(50) # 绘制散点图 plt.scatter(x, y, color='purple', marker='x', s=50, alpha=0.7) # 添加标题和轴标签 plt.title('Scatter Plot Example') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 显示图形 plt.show() 

在这个例子中,我们生成了两组随机数据x和y。使用plt.scatter函数绘制散点图,并设置了点的颜色为紫色、标记为叉号、大小为50以及透明度为0.7。最后,添加了标题和轴标签,并展示了图形。

6. 等高线图(Contour Plot)

等高线图在地理、气象、物理等领域具有广泛的应用。在Matplotlib中,我们可以使用contourcontourf函数绘制等高线图。contour函数用于绘制等高线,而contourf函数则用于填充等高线之间的区域。

下面是一个等高线图的示例代码:

import matplotlib.pyplot as plt import numpy as np # 创建一个网格 x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) X, Y = np.meshgrid(x, y) # 定义一个函数 Z = np.sin(np.sqrt(X**2 + Y**2)) # 绘制等高线图 plt.contour(X, Y, Z, 30, colors='black') # 添加标题和轴标签 plt.title('Contour Plot Example') plt.xlabel('X') plt.ylabel('Y') # 显示图形 plt.show() 

在这个例子中,我们首先创建了一个网格,并定义了一个函数Z。然后,我们使用contour函数绘制了等高线图,并设置了等高线的数量为30,颜色为黑色。最后,添加了标题和轴标签,并展示了图形。

7. 雷达图(Radar Chart)

雷达图,又称蜘蛛网图,常用于展示多维度数据的比较。虽然Matplotlib本身并不直接支持雷达图的绘制,但我们可以通过一些技巧来模拟实现。这通常涉及到在极坐标下绘制多边形。

下面是一个模拟雷达图的示例代码:

import matplotlib.pyplot as plt import numpy as np # 数据 labels = np.array(['A', 'B', 'C', 'D', 'E']) data = np.array([3, 4, 2, 5, 4]) # 计算角度 angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist() # 封闭图形 data = np.concatenate((data, [data[0]])) angles += angles[:1] # 绘制雷达图 fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True)) ax.plot(angles, data, 'o-', linewidth=2) ax.fill(angles, data, alpha=0.25) ax.set_thetagrids(angles * 180 / np.pi, labels) ax.set_title("Radar Chart Example") plt.show() 

在这个例子中,我们首先定义了标签和数据。然后,计算了每个标签对应的角度,并添加了起始角度以封闭图形。接着,我们在极坐标下绘制了数据和对应的角度,并使用fill方法填充了图形区域。最后,设置了极坐标的网格标签和标题,并展示了图形。

8. 极坐标图(Polar Plot)

极坐标图在物理学、工程学以及天文学等领域中十分常见,用于表示与角度和半径相关的数据。在Matplotlib中,我们可以设置坐标轴为极坐标,然后利用常规的绘图函数来绘制极坐标图。

下面是一个极坐标图的示例代码:

import matplotlib.pyplot as plt import numpy as np # 创建角度和半径数据 theta = np.linspace(0, 2 * np.pi, 100) r = 1 + np.sin(theta) # 绘制极坐标图 fig, ax = plt.subplots(subplot_kw=dict(polar=True)) ax.plot(theta, r) # 设置标题和标签 ax.set_title("Polar Plot Example") ax.set_theta_zero_location('N') # 设置极坐标0度位置为北 ax.set_theta_direction(-1) # 设置角度方向为顺时针 # 显示网格 ax.grid(True) # 显示图形 plt.show() 

在这个例子中,我们创建了一组角度theta和对应的半径r数据。然后,我们设置了一个极坐标的子图,并通过ax.plot方法绘制了极坐标图。通过设置subplot_kw=dict(polar=True),我们告诉Matplotlib创建一个极坐标的子图,而不是默认的笛卡尔坐标子图。为了使图形更具可读性,我们还设置了标题和标签。ax.set_title方法用于设置图形的标题,而ax.set_theta_zero_location和ax.set_theta_direction则分别用于设置极坐标0度位置的角度方向和角度的起始方向。在这个例子中,我们将0度位置设置在北方,并将角度方向设置为顺时针。此外,我们还通过ax.grid(True)开启了网格,这有助于更清晰地展示数据和角度的对应关系。最后,plt.show()命令用于显示图形。运行这段代码后,你将看到一个带有标题、标签和网格的极坐标图,展示了角度和半径之间的关系。

9. 灰度图(Grayscale Image)

灰度图是一种只包含灰度信息的图像,特别适用于处理那些仅关心亮度或强度差异而无需彩色信息的场景。例如,在医学影像处理或黑白照片分析时,灰度图非常有用。

在Matplotlib中,可以使用imshow函数结合灰度色彩映射(colormap)来显示灰度图。下面是一个简单的示例代码:

import matplotlib.pyplot as plt import numpy as np # 创建一个二维数组作为图像数据 image_data = np.random.rand(10, 10) # 绘制灰度图 plt.imshow(image_data, cmap='gray') # 添加标题和轴标签 plt.title('Grayscale Image Example') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 隐藏坐标轴 plt.axis('off') # 显示图形 plt.show() 

在这个例子中,我们首先创建了一个10x10的二维随机数组作为图像数据。然后,使用imshow函数和’gray’色彩映射将其绘制为灰度图。我们还添加了标题和轴标签,并隐藏了坐标轴,以更好地突出显示图像内容。

10. 热力图(Heatmap)

热力图在数据可视化中非常有用,尤其在需要展示二维数据间相关性或分布密度时。尽管Matplotlib没有内置的热力图绘制函数,但我们可以使用imshow函数结合二维数组数据来模拟热力图的效果。

下面是一个简单的热力图绘制示例:

import matplotlib.pyplot as plt import numpy as np # 创建一个二维随机数组作为热力图数据 heatmap_data = np.random.rand(10, 10) # 绘制热力图 plt.imshow(heatmap_data, cmap='hot', interpolation='nearest') # 添加标题和轴标签 plt.title('Heatmap Example') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 显示颜色条 plt.colorbar() # 显示图形 plt.show() 

在这个例子中,我们使用了’hot’色彩映射,它通常用于热力图,能够清晰地表示数据的大小差异。interpolation='nearest’参数确保了每个像素块都直接映射到数据值,而不进行任何插值。最后,我们还添加了一个颜色条来辅助解释颜色与数据值之间的关系。

11. 箱线图(Box Plot)

箱线图是一种用于展示数据分布情况的强大工具,它可以提供数据的最小值、最大值、中位数以及上下四分位数等关键统计量。Matplotlib中的boxplot函数能够方便地绘制箱线图。

import matplotlib.pyplot as plt import numpy as np # 创建几组随机数据 data1 = np.random.normal(0, std=1, size=100) data2 = np.random.normal(1, std=1.5, size=100) data3 = np.random.normal(-1, std=1.2, size=100) data = [data1, data2, data3] # 绘制箱线图 fig, ax = plt.subplots() bp = ax.boxplot(data, vert=False, patch_artist=True, notch=True, medianprops={'linewidth': 2}) # 设置箱体的颜色 colors = ['pink', 'lightblue', 'lightgreen'] for patch, color in zip(bp['boxes'], colors): patch.set_facecolor(color) # 添加标题和轴标签 ax.set_title('Box Plot Example') ax.set_xlabel('Value') # 显示图形 plt.show() 

在这个例子中,我们创建了三个正态分布的数据集,并使用boxplot函数绘制了它们的箱线图。通过设置vert=False,我们使箱线图水平放置。patch_artist=True允许我们为箱体设置颜色,而notch=True则生成了带缺口的箱体,有助于比较中位数是否有显著差异。最后,我们为每个箱体设置了不同的颜色,并添加了标题和轴标签。

12. 饼图(Pie Chart)

饼图是一种常用于展示数据比例关系的可视化工具。通过不同大小的扇形区域来表示各个类别的占比,使得数据的分布一目了然。以下是一个简单的饼图绘制示例:

import matplotlib.pyplot as plt # 假设我们有以下类别的数据及其比例 labels = ['Category A', 'Category B', 'Category C', 'Category D'] sizes = [15, 30, 45, 10] # 占比,总和应为100 # 绘制饼图 plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90) # 设置标题和轴相等,使饼图为圆形 plt.title('Pie Chart Example') plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. # 显示图形 plt.show() 

在这个例子中,我们定义了四个类别及其对应的比例。使用plt.pie函数绘制饼图,并通过autopct参数自动计算并显示每个扇形的百分比。startangle参数用于设置饼图的起始角度。最后,通过设置plt.axis('equal')确保饼图呈现为圆形。

13. 柱状图(Bar Chart)

柱状图用于展示分类数据的比较情况。在Matplotlib中,可以使用bar函数绘制柱状图,并设置柱子的颜色、宽度等属性。实例代码如下:

import matplotlib.pyplot as plt import numpy as np # 数据准备 categories = ['A', 'B', 'C', 'D', 'E'] values = [23, 45, 34, 12, 56] # 绘制柱状图 plt.bar(categories, values, color='green', edgecolor='black', width=0.5) # 添加标题和轴标签 plt.title('Bar Chart Example') plt.xlabel('Categories') plt.ylabel('Values') # 显示图形 plt.show() 

在这个例子中,我们定义了一个类别列表categories和一个对应的值列表values。然后,使用bar函数绘制柱状图,并设置了柱子的颜色为绿色、边框颜色为黑色、宽度为0.5。最后,添加了标题和轴标签,并通过show函数显示图形。

14. 面积图(Area Plot)

面积图通过填充折线下方的区域,可以更直观地展现数据随时间的累积变化。这在分析时间序列数据时特别有用,例如展示销售额、网站访问量等随时间的变化趋势。

下面是一个面积图的示例代码:

import matplotlib.pyplot as plt import numpy as np # 生成示例数据 dates = np.arange(start='2023-01-01', periods=10, freq='M') values = np.random.rand(10) * 100 # 绘制面积图 plt.stackplot(dates, [values], labels=['Value']) # 设置标题和轴标签 plt.title('Area Plot Example') plt.xlabel('Date') plt.ylabel('Value') # 显示图例 plt.legend(loc='upper left') # 旋转x轴标签 plt.xticks(rotation=45) # 显示图形 plt.tight_layout() plt.show() 

在这个例子中,我们创建了一个模拟的月度时间序列数据,并使用stackplot函数绘制了面积图。通过设置labels参数,我们可以为每个数据系列添加标签,并通过legend函数显示图例。

15. 堆叠图(Stacked Plot)

堆叠图通过叠加多个面积图来展示多个数据系列的累积效果。这种图表类型非常适合比较不同类别数据对总量的贡献。

以下是一个堆叠图的示例代码:

import matplotlib.pyplot as plt import numpy as np # 生成示例数据 N = 5 menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) ind = np.arange(N) # the x locations for the groups width = 0.35 # the width of the bars: can also be len(x) sequence # 绘制堆叠图 p1 = plt.bar(ind, menMeans, width, color='SkyBlue', label='Men') p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, color='IndianRed', label='Women') # 添加标题和轴标签 plt.ylabel('Scores') plt.title('Scores by group and gender') plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5')) plt.yticks(np.arange(0, 81, 10)) plt.legend() # 显示图形 plt.show() 

在这个堆叠图的例子中,我们创建了两个数据系列,分别代表男性和女性的分数。使用bar函数绘制了两个堆叠的条形图,通过设置bottom参数来指定第二个数据系列的起始位置。

16. 瀑布图(Waterfall Plot)

尽管Matplotlib本身并未直接提供绘制瀑布图的函数,但我们可以通过结合条形图(bar plot)或堆叠条形图(stacked bar plot)来实现类似的效果。以下是一个简单的瀑布图绘制示例:

import matplotlib.pyplot as plt import numpy as np # 假设有一组表示各阶段数据增减的数据 stages = ['起始值', '阶段1', '阶段2', '阶段3', '结束值'] values = [100, 120, 150, 90, 110] # 计算累积值,用于绘制瀑布图 cumulative = np.cumsum(values) # 绘制条形图,通过设置底部位置为累积值的前一项,实现瀑布图效果 fig, ax = plt.subplots() ax.bar(stages[:-1], values[1:], bottom=cumulative[:-1], color='skyblue', edgecolor='black') # 添加起始值 ax.bar(stages[0], [values[0]], color='skyblue', edgecolor='black') # 设置y轴标签和标题 ax.set_ylabel('值') ax.set_title('瀑布图示例') # 反转x轴顺序,使得起始值在最左侧 ax.set_xticklabels(stages[::-1], rotation=45) # 显示图形 plt.show() 

在这个例子中,我们使用了累积值来计算每个条形图的底部位置,从而实现了瀑布图的效果。通过调整颜色和边缘样式,可以进一步美化图表。

17. 蜘蛛网图(Spider Chart)

蜘蛛网图(或雷达图)可以通过Matplotlib的polar坐标系统来绘制。以下是一个绘制蜘蛛网图的示例代码:

import matplotlib.pyplot as plt import numpy as np # 假设我们有四组数据,对应四个变量 labels = ['变量A', '变量B', '变量C', '变量D'] data = [3, 5, 2, 4] # 计算角度,每个变量对应90度 angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist() # 将数据转换为numpy数组,方便计算 data = np.concatenate((data, [data[0]])) angles += angles[:1] # 绘制蜘蛛网图 fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True)) ax.plot(angles, data, 'o-', linewidth=2) ax.fill(angles, data, alpha=0.25) ax.set_thetagrids(angles * 180/np.pi, labels) ax.set_title("蜘蛛网图示例") # 隐藏y轴标签 ax.set_yticklabels([]) ax.set_rlabel_position(45) # 显示图形 plt.show() 

在这个例子中,我们首先计算了每个变量对应的角度,并将数据连接成一个闭环。然后,使用polar坐标系统绘制了线条,并填充了多边形区域。通过设置角度网格和标签,我们得到了一个完整的蜘蛛网图。通过调整线条样式、填充颜色和透明度等属性,可以进一步定制蜘蛛网图的外观。

18. 误差棒图(Errorbar Plot)

误差棒图在数据分析中尤为重要,尤其当我们需要展示数据点的测量误差或不确定性时。Matplotlib中的errorbar函数可以轻松地绘制这种图形。以下是一个简单的示例:

import matplotlib.pyplot as plt import numpy as np # 假设我们有一组测量数据 x = np.arange(0, 10, 1) y = np.sin(x) yerr = 0.1 * np.random.rand(len(x)) # 随机生成误差范围 # 绘制误差棒图 plt.errorbar(x, y, yerr=yerr, fmt='o', color='blue', ecolor='red', capsize=5) # 添加标题和轴标签 plt.title('Errorbar Plot Example') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 显示图形 plt.show() 

在这个例子中,我们创建了一组简单的正弦数据,并为每个数据点添加了一个随机误差。使用errorbar函数时,我们指定了数据点的位置(x, y),误差范围(yerr),数据点的格式(fmt='o’表示使用圆圈表示数据点),数据点的颜色(color=‘blue’),误差线的颜色(ecolor=‘red’)以及误差棒帽的大小(capsize=5)。

19. 六边形箱线图(Hexbin Plot)

六边形箱线图在展示大量数据点的分布情况时非常有用。它通过将数据点分组到六边形网格中,并以颜色深浅来表示每个网格中的点数密度,从而避免了数据点的重叠问题。以下是一个六边形箱线图的例子:

import matplotlib.pyplot as plt import numpy as np from matplotlib import cm from matplotlib.colors import ListedColormap, LinearSegmentedColormap import seaborn as sns # 生成随机数据 np.random.seed(0) x = np.random.randn(1000) y = np.random.randn(1000) # 创建一个六边形箱线图 plt.figure(figsize=(8, 6)) plt.hexbin(x, y, gridsize=30, cmap='Blues', mincnt=1) # 添加标题和轴标签 plt.title('Hexbin Plot Example') plt.xlabel('X-axis') plt.ylabel('Y-axis') # 设置颜色条以表示数据点的密度 cbar = plt.colorbar(label='Count') cbar.ax.set_ylabel('Number of Points') # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在这个例子中,我们生成了两组随机数据,并使用hexbin函数绘制了六边形箱线图。通过设置gridsize参数,我们可以控制网格的粗细程度。cmap参数用于指定颜色映射,这里使用了’Blues’映射来表示不同密度的数据点。mincnt参数用于设置每个六边形中必须包含的最小点数,以避免绘制过于稀疏的区域。最后,我们还添加了一个颜色条来直观地展示不同颜色所代表的点数密度。

20. 矢量场图(Quiver Plot)

矢量场图在Matplotlib中可以通过quiver函数来绘制。以下是一个二维矢量场图的例子:

import numpy as np import matplotlib.pyplot as plt # 创建网格坐标 x, y = np.meshgrid(np.arange(-5, 5, 1), np.arange(-5, 5, 1)) # 定义矢量场 u = np.sin(np.sqrt(x**2 + y**2)) v = np.cos(np.sqrt(x**2 + y**2)) # 绘制矢量场图 plt.quiver(x, y, u, v, angles='xy', scale_units='xy', scale=1, color='blue') # 添加标题和轴标签 plt.title('Quiver Plot Example') plt.xlabel('X Axis') plt.ylabel('Y Axis') # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在这个例子中,我们首先创建了一个二维网格坐标,然后定义了每个网格点上的矢量场。quiver函数用于绘制矢量,其中angles='xy'指定矢量按照x-y平面中的角度来绘制,scale_units='xy'scale=1控制矢量的比例大小。

21. K线图(K-Line Chart)

K线图,又称烛台图、蜡烛图或阴阳线图,是金融市场分析中常用的一种技术分析工具。它以每个交易周期的开盘价、收盘价、最高价和最低价为基础,绘制出直观反映市场波动的图形。K线图不仅能够帮助投资者识别市场的趋势和波动,还能为交易决策提供重要的参考依据。

下面是一个使用Matplotlib绘制K线图的例子:

首先,我们需要准备数据。这些数据通常包括每个交易周期的开盘价、收盘价、最高价和最低价。这些数据可以从金融数据提供商或交易所的官方网站上获取。在这个例子中,我们假设已经获取了这些数据,并将其存储在一个Pandas DataFrame中。

接下来,我们将使用Matplotlib库来绘制K线图。Matplotlib是一个强大的Python绘图库,可以用于绘制各种类型的图表,包括K线图。

import matplotlib.pyplot as plt import pandas as pd # 假设我们有一个名为df的Pandas DataFrame,其中包含了开盘价、收盘价、最高价和最低价的数据 # df = pd.read_csv('your_data.csv') # 你可以使用这行代码从CSV文件中读取数据 # 设置图表大小和样式 plt.figure(figsize=(10, 5)) plt.style.use('seaborn-whitegrid') # 绘制K线图 for i in range(len(df)): # 获取当前交易周期的数据 open_price = df.iloc[i]['Open'] close_price = df.iloc[i]['Close'] high_price = df.iloc[i]['High'] low_price = df.iloc[i]['Low'] # 计算K线图的宽度和位置 width = 0.6 x_position = i - (len(df) - 1) / 2 # 绘制K线的实体部分(表示开盘价和收盘价之间的价格变动) if open_price < close_price: # 上涨,用绿色表示 color = 'g' else: # 下跌,用红色表示 color = 'r' plt.bar(x_position, close_price - open_price, width=width, bottom=open_price, color=color, edgecolor='black') # 绘制K线的上下影线(表示最高价和最低价) plt.vlines(x_position, low_price, high_price, colors='black', linestyles='--', linewidth=0.8) # 设置图表标签和标题 plt.xlabel('Time') plt.ylabel('Price') plt.title('K-Line Chart') # 显示图表 plt.show() 

这段代码首先设置了图表的大小和样式,然后遍历DataFrame中的每一行数据,根据开盘价、收盘价、最高价和最低价绘制K线图的实体部分和影线。如果开盘价低于收盘价,表示价格上涨,使用绿色绘制实体部分;反之,使用红色。最后,设置了图表的标签和标题,并显示了图表。

通过绘制K线图,我们可以直观地观察市场的波动情况,识别出上涨和下跌的趋势,以及重要的价格支撑和阻力位。这对于投资者进行交易决策具有重要的参考价值。同时,我们还可以结合其他技术指标和分析方法,进一步提高交易决策的准确性和可靠性。

22. 3D柱状图(3D Bar Graph)

3D柱状图可以展示数据在三个维度上的分布,使得数据间的关系更加立体和直观。下面是一个使用Matplotlib绘制3D柱状图的例子:

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 创建数据 x = np.arange(4) y = np.arange(3) x, y = np.meshgrid(x, y) z = np.random.rand(4, 3) # 创建3D坐标系 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制3D柱状图 ax.bar3d(x.flatten(), y.flatten(), np.zeros_like(z.flatten()), 1, 1, z.flatten()) # 设置标签和标题 ax.set_xlabel('X Axis') ax.set_ylabel('Y Axis') ax.set_zlabel('Z Axis') ax.set_title('3D Bar Graph Example') # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在这个例子中,我们首先创建了一个4x3的网格数据,然后利用Axes3D对象绘制了3D柱状图。每个柱子的高度由z数组的值决定。bar3d函数接受柱子的x、y坐标、底面高度、宽度、深度和高度作为参数。

23. 3D折线图(3D Line Plot)

3D折线图通常用于展示数据在三维空间中的变化趋势。以下是一个绘制3D折线图的例子:

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 创建数据 x = np.linspace(0, 10, 100) y = np.sin(x) z = np.cos(x) # 创建3D坐标系 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 绘制3D折线图 ax.plot(x, y, z) # 设置标签和标题 ax.set_xlabel('X Axis') ax.set_ylabel('Y Axis') ax.set_zlabel('Z Axis') ax.set_title('3D Line Plot Example') # 显示图形 plt.show() 
www.zeeklog.com - ⭐️Python Matplotlib绘图(附:画图代码大全)

在这个例子中,我们创建了一个x值的线性空间,并计算了对应的y和z值(分别为正弦和余弦函数)。然后,使用Axes3D对象的plot方法绘制了3D折线图。通过调整x、y、z的值,可以展示不同变量间的相互关系和变化趋势。





总结


Matplotlib提供了丰富多样的绘图类型,能够满足不同领域和场景下的数据可视化需求。通过合理选择和应用这些绘图类型,可以更加直观、有效地展示和分析数据,从而帮助用户更好地理解和利用数据。

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk