关于python:画出你的数据故事Python中Matplotlib使用从基础到高级

45次阅读

共计 4022 个字符,预计需要花费 11 分钟才能阅读完成。

摘要:Matplotlib 是 Python 中宽泛应用的数据可视化库,它提供了丰盛的绘图性能,用于创立各种类型的图表和图形。本文将从入门到精通,具体介绍 Matplotlib 的应用办法,通过代码示例和中文正文,帮忙您把握如何在不同场景下灵便绘制高质量的图表。

1. 简介

Matplotlib 是一个功能强大的 Python 数据可视化库,它能够用来绘制各种类型的图表,包含折线图、散点图、柱状图、饼图、3D 图等。Matplotlib 的灵活性和可定制性使得它成为数据科学家和分析师的首选工具。本文将带您从入门到精通,深刻摸索 Matplotlib 的各种绘图技巧。

2. 装置 Matplotlib

在开始之前,您须要装置 Matplotlib 库。如果您应用的是 Anaconda 发行版,通常曾经预装了 Matplotlib。否则,能够应用以下命令装置:


pip install matplotlib

3. 根本绘图

在 Matplotlib 中显示中文字体须要非凡的设置,因为默认状况下 Matplotlib 可能无奈正确显示中文字符。以下是一些步骤,让您能够在 Matplotlib 绘图中正确显示中文字体:

  1. 装置字体库: 首先,确保您的零碎上装置了适宜的中文字体库,比方微软雅黑、宋体、黑体等。您能够从一些开源字体库中抉择,如思源字体、文泉驿字体等。
  2. 配置 Matplotlib: 在绘图之前,须要在 Matplotlib 中设置中文字体。能够应用 rcParams 来设置字体,这样在整个 Matplotlib 会话中都会失效。以下是一个设置中文字体的示例代码:
import matplotlib.pyplot as plt

# 设置中文字体,批改为您零碎上曾经装置的中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题

折线图

折线图是显示数据随工夫或某种程序变动的现实抉择。以下是一个简略的折线图示例:


import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 8, 6, 4, 2]

plt.plot(x, y, marker='o')
plt.title('折线图示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
plt.show()

散点图

散点图用于显示两个变量之间的关系。以下是一个简略的散点图示例:


import matplotlib.pyplot as plt

x = [160, 170, 180, 165, 175]
y = [60, 70, 80, 65, 75]

plt.scatter(x, y)
plt.title('散点图示例')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

柱状图

柱状图实用于比拟不同类别的数据。以下是一个简略的柱状图示例:


import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D', 'E']
values = [25, 40, 60, 30, 50]

plt.bar(categories, values)
plt.title('柱状图示例')
plt.xlabel('类别')
plt.ylabel('值')
plt.show()

饼图

饼图用于显示数据的绝对局部。以下是一个简略的饼图示例:


import matplotlib.pyplot as plt

labels = ['A', 'B', 'C', 'D', 'E']
sizes = [15, 30, 25, 10, 20]

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('饼图示例')
plt.show()

4. 高级绘图

子图

Matplotlib 容许将多个图表组织在一个大的图中,称为子图。以下是一个子图示例:


import matplotlib.pyplot as plt

# 创立一个 2x2 的子图布局
plt.subplot(2, 2, 1)
plt.plot(x, y)

plt.subplot(2, 2, 2)
plt.scatter(x, y)

plt.subplot(2, 2, 3)
plt.bar(categories, values)

plt.subplot(2, 2, 4)
plt.pie(sizes, labels=labels, autopct='%1.1f%%')

plt.tight_layout()  # 调整子图布局
plt.show()

自定义款式

您能够自定义图表的款式,包含色彩、线型、标记等。以下是一个自定义款式示例:


import matplotlib.pyplot as plt

plt.plot(x, y, color='red', linestyle='--', marker='o', label='数据')
plt.title('自定义款式示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
plt.legend()
plt.show()

注解和标签

您能够在图表中增加注解和标签,以加强可读性。以下是一个带注解和标签的示例:


import matplotlib.pyplot as plt

plt.scatter(x, y)
plt.title('注解和标签示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')

for i, txt in enumerate(labels):
    plt.annotate(txt, (x[i], y[i]))

plt.show()

<img src=”http://zwgroup.oss-cn-beijing.aliyuncs.com/image/image-20230817141014948.png” alt=”image-20230817141014948″ style=”zoom:80%;” />

3D 绘图

Matplotlib 还反对绘制 3D 图表,如 3D 散点图、3D 曲面图等。以下是一个 3D 散点图的示例:


import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = [160, 170, 180, 165, 175]
y = [60, 70, 80, 65, 75]
z = [2, 3, 4, 2.5, 3.5]

ax.scatter(x, y, z)
ax.set_title('3D 散点图示例')
ax.set_xlabel('身高(cm)')
ax.set_ylabel('体重(kg)')
ax.set_zlabel('分数')
plt.show()

5. 数据可视化实例

折线图:温度变化趋势


import matplotlib.pyplot as plt

days = [1, 2, 3, 4, 5, 6, 7]
temperatures = [25, 26, 27, 24, 23, 22, 21]

plt.plot(days, temperatures, marker='o')
plt.title('温度变化趋势')
plt.xlabel('日期')
plt.ylabel('温度(摄氏度)')
plt.show()

散点图:身高体重关系


import matplotlib.pyplot as plt

heights = [160, 170, 180, 165, 175]
weights = [60, 70, 80, 65, 75]

plt.scatter(heights, weights)
plt.title('身高体重关系')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

柱状图:销售数据分析


import matplotlib.pyplot as plt

products = ['A', 'B', 'C', 'D', 'E']
sales = [100, 150, 80, 200, 120]

plt.bar(products, sales)
plt.title('销售数据分析')
plt.xlabel('产品')
plt.ylabel('销售量')
plt.show()

6. Matplotlib 扩大

Seaborn 库

Seaborn 是基于 Matplotlib 的高级数据可视化库,提供了更好看、更简洁的绘图格调。您能够应用 Seaborn 来创立统计图表、热图、分布图等。


import seaborn as sns

sns.set(style="whitegrid")
sns.scatterplot(x=heights, y=weights)
plt.title('Seaborn 散点图')
plt.xlabel('身高(cm)')
plt.ylabel('体重(kg)')
plt.show()

Plotly 库

Plotly 是一个交互式数据可视化库,能够生成高度可交互的图表和图形。它反对在线分享和嵌入,实用于创立动静、可交互的数据可视化。


import plotly.express as px

fig = px.scatter(x=heights, y=weights)
fig.update_layout(title='Plotly 散点图', xaxis_title='身高(cm)', yaxis_title='体重(kg)')
fig.show()

7. 总结

Matplotlib 是 Python 中弱小的数据可视化工具,能够创立各种类型的图表和图形。本文从根底绘图开始,逐渐介绍了折线图、散点图、柱状图、饼图等根本图表类型,以及子图、自定义款式、注解和标签、3D 绘图等高级技巧。此外,咱们还展现了数据可视化实例,展现了如何将 Matplotlib 利用于理论数据分析中。最初,咱们介绍了 Matplotlib 的扩大库 Seaborn 和 Plotly,让您理解更多可选的数据可视化工具。通过深刻学习 Matplotlib,您能够更好地展现和传播数据,为决策和剖析提供无力的反对。

正文完
 0