当前位置: 首页 > article >正文

matplotlilb画图

 matplotlib 

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

1. 基础结构和模块

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

import matplotlib.pyplot as plt

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

2. 线图

        线图通常用于展示数据的连续变化,比如时间序列数据等。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='b', linestyle='-', linewidth=2)
plt.title("Line Plot - Sine Wave")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()

3. 散点图

        散点图适合显示两个变量之间的关系,例如,展示变量之间是否存在关联。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='r', marker='o')
plt.title("Scatter Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.show()

4. 柱状图

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

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 函数适合创建饼图。

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 函数用于创建直方图。

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. 箱线图

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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()


http://www.kler.cn/a/373544.html

相关文章:

  • 什么影响网站的SEO排名
  • 【SQL】SQL函数
  • openGauss开源数据库实战十
  • 【jvm】jvm对象都分配在堆上吗
  • 类和对象(2)
  • AcWing 1303:斐波那契前 n 项和 ← 矩阵快速幂加速递推
  • js实现异步和延时
  • 隨便 20241028 ISR 和 OSR 在 Kafka 中的详细解析
  • Nginx部署前端需要了解的知识
  • EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类
  • 整合SSM框架(2)
  • 雷赛DMC5X10系列脉冲运动控制卡——机械原点和工作原点原理
  • BGP 及 4+ 的一些特性及配置笔记
  • 外包干了7天,技术明显退步。。。。。
  • Go:package
  • 传奇架设教程,M2报错无法找到城堡信息文件的解决方法
  • 【c++篇】:模拟实现string类--探索字符串操作的底层逻辑
  • oracle获取中文拼音/WB
  • isp框架代码理解
  • python debug作业
  • 前端vue2迁移至uni-app
  • 产品宣传册制作成电子产品宣传册用什么软件?
  • ollama 在 Linux 环境的安装
  • Leetcode 79 Word search
  • 保障农民工工资!我们这么做:
  • 前端面试题-token的登录流程、JWT