matplotlilb画图

matplotlib

matplotlib 是 Python 中一个强大而灵活的绘图库,广泛用于数据可视化 。它允许创建多种类型的图表,包括线图、散点图、柱状图、饼图、直方图 等。matplotlib 的基础是 pyplot 模块,它为绘图提供了简单的接口。这里详细讲解一下 matplotlib 的使用方法及其核心概念:

1. 基础结构和模块

matplotlib 的核心模块是pyplot,通常以plt缩写来使用:

python 复制代码
import matplotlib.pyplot as plt

matplotlib 中常用的集中图表类型方法介绍:

2. 线图

线图通常用于展示数据的连续变化,比如时间序列数据等。plot 函数适合绘制线图。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制线图
plt.plot(x, y, color='b', linestyle='-', linewidth=2)
plt.title("Line Plot - Sine Wave")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()

3. 散点图

散点图适合显示两个变量之间的关系,例如,展示变量之间是否存在关联。scatter 函数用于创建散点图。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.random.rand(50)
y = np.random.rand(50)

# 绘制散点图
plt.scatter(x, y, color='r', marker='o')
plt.title("Scatter Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()

4. 柱状图

柱状图用于比较不同类别之间的数值大小,特别适合表示分类数据。bar 函数可以创建柱状图。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 2]

# 绘制柱状图
plt.bar(categories, values, color='g')
plt.title("Bar Chart")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.show()

5. 饼图

饼图用于显示部分与整体的比例关系。pie 函数适合创建饼图。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 数据
sizes = [30, 20, 25, 25]
labels = ['A', 'B', 'C', 'D']
colors = ['gold', 'lightblue', 'lightgreen', 'pink']

# 绘制饼图
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.title("Pie Chart")
plt.show()

6. 直方图

直方图展示数据分布情况,特别适合连续数据的频率分布。hist 函数用于创建直方图。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
data = np.random.randn(1000)  # 正态分布数据

# 绘制直方图
plt.hist(data, bins=30, color='purple', edgecolor='black')
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

除了上面的之外,还有以下类型的图表可以使用mappltlilb进行绘制:

7. 箱线图

箱线图用于显示数据的分布情况,包括中位数、四分位数及异常值,非常适合比较不同组的数据。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
data = [np.random.normal(0, std, 100) for std in range(1, 4)]

# 绘制箱线图
plt.boxplot(data, vert=True, patch_artist=True, labels=['Group 1', 'Group 2', 'Group 3'])
plt.title("Box Plot")
plt.ylabel("Value")
plt.show()

8. 雷达图(Radar Chart)

雷达图用于显示多变量数据,特别适合比较不同对象的特征。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
labels = np.array(['A', 'B', 'C', 'D', 'E'])
values = np.array([4, 3, 2, 5, 4])

# 绘制雷达图
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()

values = np.concatenate((values,[values[0]]))  # 闭合图形
angles += angles[:1]  # 闭合图形

plt.polar(angles, values, marker='o')
plt.title("Radar Chart")
plt.xticks(angles[:-1], labels)
plt.show()

9. 条形图(Horizontal Bar Chart)

条形图是柱状图的横向版本,适合显示较长的类别名称。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['Category A', 'Category B', 'Category C']
values = [10, 20, 15]

# 绘制条形图
plt.barh(categories, values, color='orange')
plt.title("Horizontal Bar Chart")
plt.xlabel("Values")
plt.ylabel("Categories")
plt.show()

10. 面积图(Area Plot)

面积图用于显示随时间变化的总量,强调数值的累积。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 绘制面积图
plt.fill_between(x, y1, color='skyblue', alpha=0.5, label='Sine')
plt.fill_between(x, y2, color='lightgreen', alpha=0.5, label='Cosine')
plt.title("Area Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.legend()
plt.show()

11. 曲线图(Step Plot)

曲线图显示数据的阶梯变化,适合显示离散变化或不连续数据。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.arange(10)
y = np.random.rand(10)

# 绘制曲线图
plt.step(x, y, where='mid', label='Step Plot', color='orange')
plt.title("Step Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.legend()
plt.show()

14. 概率分布图(Probability Distribution Function, PDF)

用于展示概率分布的形状,通常与正态分布等一起使用。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
data = np.random.randn(1000)

# 绘制概率分布图
plt.hist(data, bins=30, density=True, alpha=0.5, color='g', label='Histogram')
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = (1 / (np.sqrt(2 * np.pi))) * np.exp(-0.5 * (x**2))  # 正态分布函数
plt.plot(x, p, 'k', linewidth=2, label='PDF')
plt.title("Probability Distribution")
plt.xlabel("Value")
plt.ylabel("Probability")
plt.legend()
plt.show()

15. 极坐标图(Polar Plot)

极坐标图用于展示数据在极坐标系中的分布。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
theta = np.linspace(0, 2 * np.pi, 100)
r = np.abs(np.sin(2 * theta))  # 半径

# 绘制极坐标图
plt.polar(theta, r, color='purple')
plt.title("Polar Plot")
plt.show()

16. 瀑布图(Waterfall Chart)

瀑布图用于展示数据的逐步累加,常用于财务数据的可视化。

python 复制代码
import matplotlib.pyplot as plt

# 数据
categories = ['Start', 'Increase', 'Decrease', 'Increase', 'End']
values = [100, 30, -20, 50, 0]

# 计算累计值
cumulative = [sum(values[:i+1]) for i in range(len(values))]

# 绘制瀑布图
plt.bar(categories, cumulative, color=['blue', 'green', 'red', 'green', 'blue'])
plt.title("Waterfall Chart")
plt.ylabel("Values")
plt.show()

17. 轨迹图(Trajectory Plot)

轨迹图展示对象在空间中的运动轨迹,常用于物理和工程领域。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
t = np.linspace(0, 10, 100)
x = np.sin(t)
y = np.cos(t)

# 绘制轨迹图
plt.plot(x, y, label='Trajectory', color='orange')
plt.title("Trajectory Plot")
plt.xlabel("X Coordinate")
plt.ylabel("Y Coordinate")
plt.axis('equal')  # 保持比例
plt.legend()
plt.show()

18. 网格图(Grid Plot)

网格图展示多个变量的散点图或其他图表的组合,通常用于展示高维数据。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

# 绘制网格图
fig, axs = plt.subplots(1, 3, figsize=(15, 5))

axs[0].scatter(x, y)
axs[0].set_title('Scatter Plot')
axs[1].hist(x, bins=10)
axs[1].set_title('Histogram')
axs[2].bar(range(10), z[:10])
axs[2].set_title('Bar Chart')

plt.show()

19. 频率多边形图(Frequency Polygon)

频率多边形图展示数据的分布,类似于直方图但用线连接各个顶点。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
data = np.random.randn(1000)

# 绘制频率多边形图
plt.hist(data, bins=30, density=True, alpha=0.5, color='g', edgecolor='black')
plt.plot(np.sort(data), np.arange(1, len(data)+1) / len(data), color='red', linewidth=2, label='Frequency Polygon')
plt.title("Frequency Polygon")
plt.xlabel("Value")
plt.ylabel("Density")
plt.legend()
plt.show()

20. 堆叠图(Stacked Plot)

堆叠图用于展示各部分对整体的贡献,适合展示多个数据系列的堆叠效果。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np


# 数据
categories = ['A', 'B', 'C']
values1 = [3, 2, 5]
values2 = [2, 3, 1]

# 绘制堆叠图
plt.bar(categories, values1, color='blue', label='Series 1')
plt.bar(categories, values2, bottom=values1, color='orange', label='Series 2')
plt.title("Stacked Bar Chart")
plt.ylabel("Values")
plt.legend()
plt.show()

21. 条形折线图(Bar Line Plot)

条形折线图同时展示条形图和折线图,适合展示不同数据的对比。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['A', 'B', 'C']
values1 = [3, 5, 2]
values2 = [4, 2, 5]

# 绘制条形折线图
plt.bar(categories, values1, color='blue', label='Bar Values')
plt.plot(categories, values2, color='red', marker='o', label='Line Values')
plt.title("Bar and Line Plot")
plt.ylabel("Values")
plt.legend()
plt.show()
相关推荐
俊哥大数据19 分钟前
【项目实战2】基于Flink电商直播实时分析大数据项目
信息可视化
数据智研13 小时前
【数据分享】(2005–2016年)基于水资源承载力的华北地区降水与地下水要素数据
大数据·人工智能·信息可视化·数据分析
min18112345615 小时前
PC端零基础跨职能流程图制作教程
大数据·人工智能·信息可视化·架构·流程图
GIS之路16 小时前
GDAL 实现矢量裁剪
前端·python·信息可视化
智航GIS16 小时前
10.6 Scrapy:Python 网页爬取框架
python·scrapy·信息可视化
计算机学姐19 小时前
基于SpringBoot的校园资源共享系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·spring·信息可视化
dajun1811234561 天前
跨部门工作流泳道图在线绘制工具 PC
大数据·数据库·人工智能·信息可视化·架构·流程图
AC赳赳老秦1 天前
医疗数据安全处理:DeepSeek实现敏感信息脱敏与结构化提取
大数据·服务器·数据库·人工智能·信息可视化·数据库架构·deepseek
专注数据的痴汉1 天前
「数据获取」吉林地理基础数据(道路、水系、四级行政边界、地级城市、DEM等)
大数据·人工智能·信息可视化
骆驼爱记录1 天前
PPT高效技巧:30秒提升制作速度
信息可视化