Matplotlib pyplot Axes Formatter对象的使用
Matplotlib是Python中最常用的数据可视化库之一。它是一个非常强大的库,可以创建各种类型的图表,包括线图、散点图、柱状图、饼图、等高线图、3D图等等。
pyplot是Matplotlib中最常用的模块之一,它提供了一个类似于Matlab的界面,使得用户可以方便地绘制各种类型的图表。
在Matplotlib中,所有的绘图都是在虚拟的“图形(Figure)”对象中完成的。每个图形对象可以包含一个或多个“坐标系(Axes)”对象。坐标系对象则是真正绘制图形的对象。
阅读更多:Matplotlib 教程
pyplot模块的使用
在使用Matplotlib时,我们通常会使用pyplot模块。该模块提供了一系列的函数,可以帮助我们快速创建各种类型的图表。
绘制线图
在Matplotlib中,绘制线图的函数是plot
。下面是一个简单的例子,用来绘制一个正弦曲线。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-np.pi, np.pi, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
在这个例子中,我们使用了NumPy库中的linspace
函数,生成了一个包含100个点的x轴数据。然后我们使用np.sin
函数计算了每个点对应的y值。最后,我们使用plot
函数绘制了这个线图,并使用show
函数将其显示出来。
绘制散点图
Matplotlib中的散点图绘制函数是scatter
。下面是一个例子,用来绘制服从正态分布的随机散点图。
import matplotlib.pyplot as plt
import numpy as np
x = np.random.normal(size=100)
y = np.random.normal(size=100)
plt.scatter(x, y)
plt.show()
在这个例子中,我们使用了NumPy库中的random.normal
函数,生成了两个包含100个元素的数组,分别作为x轴和y轴的数据。然后我们使用scatter
函数绘制了这个散点图,并使用show
函数将其显示出来。
绘制柱状图
Matplotlib中的柱状图绘制函数是bar
。下面是一个例子,用来绘制三个城市的销售额数据。
import matplotlib.pyplot as plt
import numpy as np
x = ["Beijing", "Shanghai", "Guangzhou"]
y = [100, 120, 80]
plt.bar(x, y)
plt.show()
在这个例子中,我们直接手动定义了三个城市的名称和销售额数据。然后我们使用bar
函数绘制了这个柱状图,并使用show
函数将其显示出来。
绘制饼图
Matplotlib中的饼图绘制函数是pie
。下面是一个例子,用来绘制三种水果分别的销售占比。
import matplotlib.pyplot as plt
labels = ["Apple", "Orange", "Banana"]
sizes = [30, 40, 30]
plt.pie(sizes, labels=labels)
plt.show()
在这个例子中,我们手动定义了三种水果名称和它们的销售占比。然后我们使用pie
函数绘制了这个饼图,并使用show
函数将其显示出来。
绘制等高线图
Matplotlib中的等高线图绘制函数是contour
。下面是一个例子,用来绘制二元高斯分布的等高线图。
import matplotlib.pyplot as plt
import numpy as np
x, y = np.meshgrid(np.linspace(-3, 3, 100), np.linspace(-3, 3, 100))
z = np.exp(-(x**2 + y**2)/2) / (2 * np.pi)
plt.contour(x, y, z)
plt.show()
在这个例子中,我们使用了NumPy库中的meshgrid
函数,生成了一个二维网格,作为x轴和y轴的数据。然后我们使用一个二元高斯分布计算了每个点对应的z值。最后,我们使用contour
函数绘制了这个等高线图,并使用show
函数将其显示出来。
绘制3D图
Matplotlib中的3D图绘制函数是plot_surface
。下面是一个例子,用来绘制一个带有多个极值点的三维函数。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.gca(projection="3d")
x, y = np.meshgrid(np.linspace(-3, 3, 100), np.linspace(-3, 3, 100))
z = np.sin(np.sqrt(x**2 + y**2)) / (np.sqrt(x**2 + y**2))
ax.plot_surface(x, y, z)
plt.show()
在这个例子中,我们使用了Matplotlib中的Axes3D
模块,生成了一个三维图表的坐标系对象。然后我们使用了NumPy库中的meshgrid
函数,生成了一个二维网格,作为x轴和y轴的数据。然后我们使用一个三维函数计算了每个点对应的z值。最后,我们使用plot_surface
函数绘制了这个三维图,并使用show
函数将其显示出来。
Axes对象的使用
在Matplotlib中,所有的绘图都是在虚拟的“图形(Figure)”对象中完成的。每个图形对象可以包含一个或多个“坐标系(Axes)”对象。坐标系对象则是真正绘制图形的对象。
下面是一个例子,展示了如何创建一个包含多个坐标系的图形,并进行一些基本的设置。
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
# 创建第一个坐标系对象
ax1 = fig.add_subplot(2, 2, 1)
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
ax1.plot(x, y)
ax1.set_title("Sine")
# 创建第二个坐标系对象
ax2 = fig.add_subplot(2, 2, 2)
x = np.linspace(-3, 3, 100)
y = np.exp(-x**2)
ax2.plot(x, y)
ax2.set_title("Gaussian")
# 创建第三个坐标系对象
ax3 = fig.add_subplot(2, 2, 3)
x = np.random.normal(size=100)
y = np.random.normal(size=100)
ax3.scatter(x, y)
ax3.set_title("Scatter")
# 创建第四个坐标系对象
ax4 = fig.add_subplot(2, 2, 4)
x = ["A", "B", "C"]
y = [30, 40, 50]
ax4.bar(x, y)
ax4.set_title("Bar")
plt.show()
在这个例子中,我们使用了Matplotlib中的add_subplot
函数,创建了四个坐标系对象,并将它们加入到了同一个图形对象中。然后我们使用各种不同的图表类型,分别在这四个坐标系对象中绘制了四个不同的图表。最后,我们使用show
函数将这个图形显示出来。
Formatter对象的使用
在Matplotlib中,Formatter用于控制坐标轴上标签的格式化方式。标签可以是数字,也可以是字符串,Formatter可以帮助我们将它们格式化成我们想要的样式。
下面是一个例子,展示了如何使用Formatter将x轴上的数字标签格式化为日期。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.dates import DateFormatter, DayLocator
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
# 准备数据
dates = np.array(["2020-01-01", "2020-02-01", "2020-03-01", "2020-04-01", "2020-05-01"], dtype="datetime64")
values = np.array([10, 20, 15, 25, 30])
# 绘制折线图
ax.plot(dates, values)
# 设置x轴的主要刻度为每天
ax.xaxis.set_major_locator(DayLocator())
# 设置x轴上的数字标签格式化为日期
date_formatter = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_formatter)
# 设置x轴标签倾斜,使其更易读
plt.xticks(rotation=30)
plt.show()
在这个例子中,我们首先准备了一个日期数组和相应的数据数组。然后我们使用plot
函数绘制了这个折线图。接着,我们使用DayLocator
函数将x轴的主要刻度设置为每天。然后我们使用DateFormatter
函数将数字标签格式化为日期类型。最后,我们使用rotation
参数将x轴标签倾斜,使其更易读。
总结
Matplotlib是一个非常强大的数据可视化库,可以帮助我们创建各种类型的图表。在使用Matplotlib时,我们通常会使用pyplot模块,它提供了一系列的函数,可以帮助我们快速创建各种类型的图表。
在Matplotlib中,所有的绘图都是在虚拟的“图形(Figure)”对象中完成的。每个图形对象可以包含一个或多个“坐标系(Axes)”对象。坐标系对象则是真正绘制图形的对象。
Formatter用于控制坐标轴上标签的格式化方式。标签可以是数字,也可以是字符串,Formatter可以帮助我们将它们格式化成我们想要的样式。在使用Formatter时,我们可以使用各种预定义好的函数,也可以自定义函数来进行格式化。