Matplotlib Python绘图库
Matplotlib是一个Python绘图库,提供了各种绘图API,可以用于创建可视化图表,包括线条图、散点图、条形图、面积图、饼图、直方图等等。Matplotlib还提供了多种数据可视化函数,包括图形、颜色、图像、简单的动画等等。
阅读更多:Matplotlib 教程
基本语法
Matplotlib提供了两种基本方法绘制图形,一种是“函数式绘图”方法,另一种是“面向对象绘图”方法。
函数式绘图
在函数式绘图方法中,Matplotlib会自动创建一个Figure对象,并且可以在Figure上绘制多个图形。
下面是一个简单的例子,展示如何使用函数式绘图方法绘制一条曲线:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x))
plt.show()
该程序首先创建了一个linspace数组,用于存储曲线的横坐标。然后,使用plot函数绘制了sin函数的图形。最后,使用show函数将图形显示出来。
面向对象绘图
在面向对象绘图方法中,需要显式创建Figure和Axes对象,并在Axes对象上绘制图形。这种方法通常用于绘制包含多个图形,或者需要对图形进行复杂操作的场合。
下面是一个简单的例子,展示如何使用面向对象绘图方法绘制一条曲线:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x))
plt.show()
在这个例子中,我们首先使用Figure和Axes类创建一个对象并存储在fig和ax中。然后,我们使用plot函数在ax上绘制sin函数的图形。最后,使用show函数将图形显示出来。
常用绘图函数
线图
线图是数据可视化中最基本也是最常用的形式之一。使用Matplotlib绘制线图通常使用plot函数。
下面是一个简单的例子,展示如何使用plot函数绘制一条折线图:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()
散点图
散点图是一种用于显示两个变量之间关系的图表。在Matplotlib中,散点图可以使用scatter函数来绘制。
下面是一个简单的例子,展示如何使用scatter函数绘制一张散点图:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y)
plt.show()
条形图
条形图是一种用于显示离散数据的图表类型。在Matplotlib中,可以使用bar函数绘制条形图。
下面是一个简单的例子,展示了如何使用bar函数绘制一张条形图:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(5)
y = np.random.randint(1, 10, size=5)
plt.bar(x, y)
plt.show()
饼图
饼图是一种用于显示不同类别在总体中所占比例的图表类型。在Matplotlib中,可以使用pie函数绘制饼图。
下面是一个简单的例子,展示了如何使用pie函数绘制一张饼图:
import matplotlib.pyplot as plt
importnumpy as np
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels)
plt.show()
自定义图形样式
Matplotlib提供了很多可以自定义的图形样式,包括线条样式、标记样式、颜色和字体等等。下面展示了一些常用的自定义样式:
线条样式
| 样式代码 | 描述 |
|---|---|
- |
实线 |
-- |
破折线 |
-. |
点划线 |
: |
虚线 |
下面是一个例子,展示了如何使用不同的线条样式绘制一张图表:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, '-.', linewidth=2)
plt.plot(x, np.cos(x), '--', linewidth=2)
plt.show()
标记样式
| 样式代码 | 描述 |
|---|---|
. |
点 |
o |
圆圈 |
s |
正方形 |
v |
倒三角形 |
^ |
正三角形 |
下面是一个例子,展示了如何使用不同的标记样式绘制一张图表:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, 'o', markersize=10)
plt.plot(x, np.cos(x), '^', markersize=8)
plt.show()
颜色样式
| 颜色代码 |
|---|
b |
g |
r |
c |
m |
y |
k |
w |
下面是一个例子,展示了如何使用不同的颜色样式绘制一张图表:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, 'g', linewidth=2)
plt.plot(x, np.cos(x), 'r', linewidth=2)
plt.show()
字体样式
Matplotlib中的字体样式包括了字体本身、字号、粗体、斜体以及其他的文本属性。下面是一个例子,展示了如何使用不同的字体样式绘制一张图表:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y, 'g', linewidth=2)
plt.plot(x, np.cos(x), 'r', linewidth=2)
plt.title('My Plot', fontsize=18, fontweight='bold', color='blue')
plt.xlabel('x', fontsize=14, fontweight='bold')
plt.ylabel('y', fontsize=14, fontweight='bold')
plt.show()
数据可视化实战
下面是一些数据可视化实战的例子,用于展示如何使用Matplotlib来探索和可视化数据。
实例1:温度变化数据可视化
下面是一个展示了某城市2019年每个月份的平均最高温度和平均最低温度的图表:
import matplotlib.pyplot as plt
import numpy as np
months = np.arange(1,13)
avg_high = [31, 36, 45, 60, 70, 78, 85, 84, 77, 64, 51, 36]
avg_low = [21, 24, 32, 43, 53, 62, 69, 67, 60, 47, 34, 24]
plt.plot(months, avg_high, label='平均最高温度')
plt.plot(months, avg_low, label='平均最低温度')
plt.xlabel('月份', fontsize=14)
plt.ylabel('温度(℃)', fontsize=14)
plt.title('2019年温度变化', fontsize=18, fontweight='bold')
plt.legend()
plt.show()
实例2:餐厅账单分析数据可视化
下面是一个展示了某餐厅账单中不同付款方式和不同时间的账单金额的图表:
import matplotlib.pyplot as plt
import numpy as np
# 模拟账单数据
payment_methods = ['现金', '刷卡', '微信', '支付宝']
bill_amounts = [1200, 3500, 4000, 1800]
time_periods = ['早餐', '午餐', '晚餐']
bill_values = [[200, 700, 300],
[800, 1000, 1700],
[500, 1800, 1700],
[300, 500, 1000]]
# 绘制饼图
plt.subplot2grid((2, 2), (0, 0))
plt.title('不同付款方式占比')
plt.pie(bill_amounts, labels=payment_methods, autopct='%1.1f%%')
# 绘制柱状图
plt.subplot2grid((2, 2), (0, 1))
plt.title('不同时间账单金额')
bar_width = 0.2
colors = ['r', 'g', 'b']
for i in range(len(payment_methods)):
plt.bar(np.arange(len(time_periods))+(i*bar_width), bill_values[i], width=bar_width, color=colors[i], label=payment_methods[i])
plt.xticks(np.arange(len(time_periods))+bar_width, time_periods)
plt.legend()
# 绘制散点图
plt.subplot2grid((2, 2), (1, 0), colspan=2)
plt.title('不同时间总账单金额')
plt.scatter(range(len(time_periods)), np.sum(bill_values, axis=0), s=bill_amounts, c='r')
plt.xticks(range(len(time_periods)), time_periods)
plt.tight_layout()
plt.show()
总结
Matplotlib是一个功能强大的Python绘图库,提供了丰富的绘图API,可以用于创建各种可视化图表。无论是初学者还是专业人士,都可以使用Matplotlib进行数据可视化操作。在本次文章中,我们介绍了Matplotlib的基本语法、常用绘图函数、自定义图形样式以及实战案例,希望本文能够对您进行数据可视化带来一些启发与帮助。
极客教程