Matplotlib 如何创建不同类型的图表,如何使用样式表和添加图例

Matplotlib 如何创建不同类型的图表,如何使用样式表和添加图例

Matplotlib是Python的一个绘图库,可以用来创建各种类型的图表,包括线图、散点图、条形图、饼图等等。它主要用于数据可视化,是数据分析工具中非常重要的一个。

Matplotlib提供了一系列的API来创建不同样式的图表,同时它也支持自定义设置以及各种细节控制。例如,支持横轴和纵轴的标签、标题、刻度线等,也可以设置坐标轴的范围、颜色、线型等。

让我们看一个简单的Matplotlib示例:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,10,100)
y = np.sin(x)

plt.plot(x,y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('A simple sin plot')
plt.show()

阅读更多:Matplotlib 教程

Matplotlib默认风格

在上面的示例中,我们使用了Matplotlib的默认设置来创建图表。Matplotlib默认的风格称为“Classic”,这种风格按照以下方式设置:

  • x轴和y轴的刻度线为黑色
  • 网格线为虚线,灰色
  • 图表背景为白色
  • 线条颜色为蓝色
  • 图表边框为白色

这是一个非常基本的设置,可以看出和Excel或Tableau等电子表格软件生成的图表相比,Matplotlib的默认图表相对较为简洁和普通。

我们可以使用Matplotlib中的样式表来自定义图表的样式。Matplotlib已经内置了多个不同样式的样式表,可以直接使用。例如ggplotfivethirtyeight等。这些样式表可以在线获得,或者通过print(plt.style.available)打印出来。

以下示例展示如何使用样式表来绘制线条:

# 使用默认样式表
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.show()

# 使用ggplot样式表
plt.style.use('ggplot')
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.show()

# 使用fivethirtyeight样式表
plt.style.use('fivethirtyeight')
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.show()

在Matplotlib中添加图例

当绘制多个线条时,常常需要添加图例。Matplotlib提供了多种方法添加图例。下面是使用labellegend添加图例的示例:

# 添加图例
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, label='Sin')
plt.plot(x, y2, label='Cos')

plt.xlabel('x')
plt.ylabel('y')
plt.title('A simple plot')
plt.legend()

plt.show()

上述代码中,我们先创建了两个正弦曲线和余弦曲线,并使用label给每条线添加了一个标签。在plt.legend()中添加这些标签后,Matplotlib将自动创建一个图例,用于说明每条线所代表的数据。

在Matplotlib中使用子图

Matplotlib中最常用的子图创建方法是subplot()函数,它接受三个数字作为参数,表示行数、列数和子图的索引。例如,subplot(2,2,1)表示将当前图形分成2行2列,并选择第一个子图作为当前绘图区域。

以下是一个创建多个子图的示例:

# 创建多个子图
x = np.linspace(0,10,100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)

fig, axs = plt.subplots(2, 2)

axs[0, 0].plot(x, y1)
axs[0, 0].set_title('Sin')

axs[0, 1].plot(x, y2, 'tab:orange')
axs[0, 1].set_title('Cos')

axs[1, 0].plot(x, y3, 'tab:green')
axs[1, 0].set_title('Tan')

axs[1, 1].plot(x, y1, 'tab:red')
axs[1, 1].plot(x, y2, 'tab:blue')
axs[1, 1].set_title('Sin and Cos')

for ax in axs.flat:
    ax.set(xlabel='x-label', ylabel='y-label')

plt.show()

Matplotlib中的条形图

Matplotlib支持多种类型的图表,其中之一是条形图。条形图用于比较不同类别数据的值或数量,适用于某些类型的分析或报告。Matplotlib中可以使用bar()函数来创建条形图。以下是一个简单的示例:

# 创建一个条形图
labels = ['Python', 'Java', 'C++', 'JavaScript', 'PHP']
values = [20, 26, 18, 14, 12]

plt.bar(labels, values)
plt.title('Programming Language Popularity')
plt.xlabel('Language')
plt.ylabel('Popularity')
plt.show()

Matplotlib中的散点图

Matplotlib中的另一个常见图表类型是散点图。散点图用于显示两个变量之间的关系,通常用于揭示数据中的相关性。可以使用scatter()函数来创建散点图。以下是一个简单的示例:

# 创建一个散点图
x = np.random.randn(50)
y = np.random.randn(50)

plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

Matplotlib中的饼图

Matplotlib还支持饼图。饼图可以用于将数据按照百分比或比例分开显示。使用pie()函数创建饼图。以下是一个简单的示例:

# 创建一个饼图labels = ['Python', 'Java', 'C++', 'JavaScript', 'PHP']
values = [20, 26, 18, 14, 12]

plt.pie(values, labels=labels)
plt.title('Programming Language Popularity')
plt.show()

Matplotlib中的Dash-dot-dot线型

Matplotlib支持多个线型,其中之一是Dash-dot-dot线型。Dash-dot-dot线型用于强调线条的特殊性质,例如表示图表中的某个关键点或指数。它由平均长度的点、虚线和双点组成。可以使用字符串'-. ',但是注意使用空格,因为字符串中第一个字符表示短划线,第二个字符表示点,第三个字符是空格,第四个字符再次表示点。

以下是将Dash-dot-dot线型应用于Matplotlib示例之一的示例:

# 应用Dash-dot-dot线型
x = np.linspace(0, 10, 100)

# 创建三个正弦曲线
y1 = np.sin(x)
y2 = np.sin(x + 1)
y3 = np.sin(x + 2)

# 将Dash-dot-dot线型应用于第二个曲线
plt.plot(x, y1, '-.', label='Sin 1')
plt.plot(x, y2, '-.', label='Sin 2')
plt.plot(x, y3, '-', label='Sin 3')

plt.title('Sin Waves with Dash-dot-dot Line Style')
plt.legend()
plt.show()

总结

在本篇文章中,我们学习了Matplotlib作为Python中最流行的绘图库之一的基础知识,包括如何创建不同类型的图表,如何使用样式表和添加图例,如何创建子图以及如何应用Dash-dot-dot线型。了解这些基础知识将使您能够使用Matplotlib来可视化和解释数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程