1. 引言
Matplotlib是一个强大的Python库,用于创建高质量的静态、交互式和动画可视化。通过Matplotlib,我们可以轻松地将数据转换为图表,从而更好地理解和传达信息。本文将深入解析20个实战案例,帮助您掌握Matplotlib,实现数据可视化。
2. 案例一:基本折线图
折线图是展示数据随时间或其他变量变化的常用图表。以下是一个简单的折线图示例:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
plt.plot(x, y)
plt.title('基本折线图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()
3. 案例二:散点图
散点图用于展示两个变量之间的关系。以下是一个散点图示例:
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
plt.scatter(x, y)
plt.title('散点图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()
4. 案例三:柱状图
柱状图用于比较不同类别或组的数据。以下是一个柱状图示例:
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 30, 40]
plt.bar(categories, values)
plt.title('柱状图')
plt.xlabel('类别')
plt.ylabel('值')
plt.show()
5. 案例四:饼图
饼图用于展示各部分占整体的比例。以下是一个饼图示例:
import matplotlib.pyplot as plt
labels = 'A', 'B', 'C', 'D'
sizes = [15, 30, 45, 10]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.title('饼图')
plt.show()
6. 案例五: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 = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
z = [0, 1, 4, 9, 16]
ax.scatter(x, y, z)
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')
plt.title('3D散点图')
plt.show()
7. 案例六: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 = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
z = [0, 1, 4, 9, 16]
ax.bar3d(x, y, z, 1, 1, 1)
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')
plt.title('3D柱状图')
plt.show()
8. 案例七:箱线图
箱线图用于展示数据的分布情况。以下是一个箱线图示例:
import matplotlib.pyplot as plt
data = [25, 30, 35, 40, 45, 50, 55, 60, 65, 70]
plt.boxplot(data)
plt.title('箱线图')
plt.xlabel('数据')
plt.ylabel('值')
plt.show()
9. 案例八:热力图
热力图用于展示数据矩阵的分布情况。以下是一个热力图示例:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title('热力图')
plt.show()
10. 案例九:等高线图
等高线图用于展示数据在二维空间中的分布情况。以下是一个等高线图示例:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
plt.contour(X, Y, Z, 20)
plt.title('等高线图')
plt.show()
11. 案例十:极坐标图
极坐标图用于展示数据在极坐标系中的分布情况。以下是一个极坐标图示例:
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(0, 2 * np.pi, 100)
r = np.sin(theta)
plt.polar(theta, r)
plt.title('极坐标图')
plt.show()
12. 案例十一:时间序列图
时间序列图用于展示数据随时间的变化趋势。以下是一个时间序列图示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.DataFrame({
'Date': pd.date_range(start='1/1/2020', periods=100, freq='D'),
'Value': np.random.randn(100)
})
plt.plot(data['Date'], data['Value'])
plt.title('时间序列图')
plt.xlabel('日期')
plt.ylabel('值')
plt.show()
13. 案例十二:散点图矩阵
散点图矩阵用于展示多个变量之间的关系。以下是一个散点图矩阵示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.DataFrame({
'A': np.random.randn(100),
'B': np.random.randn(100),
'C': np.random.randn(100),
'D': np.random.randn(100)
})
plt.scatter(data['A'], data['B'], c=data['C'], cmap='viridis')
plt.colorbar()
plt.title('散点图矩阵')
plt.show()
14. 案例十三:层次结构图
层次结构图用于展示数据之间的层次关系。以下是一个层次结构图示例:
import matplotlib.pyplot as plt
import networkx as nx
G = nx.DiGraph()
G.add_edge('A', 'B')
G.add_edge('B', 'C')
G.add_edge('C', 'D')
G.add_edge('D', 'E')
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True)
plt.title('层次结构图')
plt.show()
15. 案例十四:词云图
词云图用于展示文本数据中的关键词分布情况。以下是一个词云图示例:
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text = 'This is a sample text for word cloud generation. The text contains multiple words, and some words are more important than others.'
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
16. 案例十五:地图图
地图图用于展示数据在地理空间中的分布情况。以下是一个地图图示例:
import matplotlib.pyplot as plt
import geopandas as gpd
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
fig, ax = plt.subplots(1, 1, figsize=(15, 10))
world.plot(ax=ax, color='white', edgecolor='black')
plt.title('地图图')
plt.show()
17. 案例十六:时间序列图(股票价格)
时间序列图可以用于展示股票价格的变化趋势。以下是一个股票价格时间序列图示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('stock_prices.csv')
plt.figure(figsize=(12, 6))
plt.plot(data['Date'], data['Close'], label='Close Price')
plt.title('股票价格时间序列图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.legend()
plt.show()
18. 案例十七:散点图(房价与面积)
散点图可以用于展示房价与面积之间的关系。以下是一个房价与面积散点图示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('house_prices.csv')
plt.figure(figsize=(12, 6))
plt.scatter(data['Square_Feet'], data['Price'], alpha=0.5)
plt.title('房价与面积散点图')
plt.xlabel('面积')
plt.ylabel('价格')
plt.show()
19. 案例十八:箱线图(收入分布)
箱线图可以用于展示收入分布情况。以下是一个收入分布箱线图示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('income_data.csv')
plt.figure(figsize=(12, 6))
plt.boxplot(data['Income'], vert=False)
plt.title('收入分布箱线图')
plt.xlabel('收入')
plt.show()
20. 案例十九:热力图(电影评分)
热力图可以用于展示电影评分的分布情况。以下是一个电影评分热力图示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('movie_ratings.csv')
plt.figure(figsize=(12, 6))
plt.imshow(data.corr(), cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title('电影评分热力图')
plt.show()
21. 案例二十:极坐标图(风速与风向)
极坐标图可以用于展示风速与风向之间的关系。以下是一个风速与风向极坐标图示例:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('wind_data.csv')
plt.figure(figsize=(12, 6))
plt.polar(data['Wind_Direction'], data['Wind_Speed'])
plt.title('风速与风向极坐标图')
plt.xlabel('风向')
plt.ylabel('风速')
plt.show()
总结
通过以上20个实战案例,您已经掌握了Matplotlib的基本用法和高级技巧。希望这些案例能够帮助您在实际项目中更好地应用Matplotlib进行数据可视化。