第15章 生成数据:Python数据可视化
·
15.1 安装Matplotlib
Matplotlib是Python最流行的2D绘图库,用于生成折线图、散点图、直方图等,适用于数据探索和结果展示。
安装命令:
pip install matplotlib
验证安装:
import matplotlib.pyplot as plt
print(plt.__version__) # 应输出版本号(如3.7.1)
15.2 绘制简单的折线图
折线图用于展示数据随时间或其他连续变量的变化趋势,核心函数是plot()。
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y, linewidth=2) # 绘制折线,设置线条粗细
plt.title("Simple Line Chart", fontsize=14) # 标题
plt.xlabel("X-axis", fontsize=12) # X轴标签
plt.ylabel("Y-axis", fontsize=12) # Y轴标签
plt.grid(True) # 显示网格
plt.show()
关键点:
- linewidth控制线条粗细(默认1)。
- fontsize调整标签字体大小。
- 必须调用plt.show()才会显示图表。
15.2.4 使用scatter()绘制散点图并设置样式
散点图用于展示两个变量之间的关系,适合发现数据分布或聚类。
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.scatter(x, y, s=100, c='red', edgecolor='black', marker='o')
plt.title("Scatter Plot Example")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
参数解析:
- s:点的大小。
- c:颜色(支持名称、RGB或颜色映射)。
- edgecolor:点的边框颜色。
- marker:形状(如o圆形、^三角形)。
15.2.8 使用颜色映射(Colormap)
颜色映射通过颜色深浅反映数据值的差异,常用于热力图或分类数据。
x = list(range(1, 101))
y = [i**2 for i in x]
plt.scatter(x, y, c=y, cmap=plt.cm.Blues, edgecolor='none', s=40)
plt.colorbar() # 显示颜色条
plt.show()
关键点:
- cmap指定颜色映射(如Blues、viridis)。
- colorbar()添加颜色条,显示数值与颜色的对应关系。
15.3 随机选择与RandomWalk类
随机游走(Random Walk)模拟随机过程,常用于金融、物理等领域。通过类封装实现多次模拟。
from random import choice
class RandomWalk:
def __init__(self, num_points=5000):
self.num_points = num_points
self.x = [0]
self.y = [0]
def fill_walk(self):
while len(self.x) < self.num_points:
x_step = choice([1, -1]) * choice([0, 1, 2])
y_step = choice([1, -1]) * choice([0, 1, 2])
# 计算新位置
new_x = self.x[-1] + x_step
new_y = self.y[-1] + y_step
self.x.append(new_x)
self.y.append(new_y)
# 生成并绘制随机游走
rw = RandomWalk()
rw.fill_walk()
plt.plot(rw.x, rw.y, linewidth=1)
plt.show()
优化建议:
- 使用渐变色反映游走顺序:plt.scatter(rw.x, rw.y, c=range(rw.num_points), cmap='Blues')
- 隐藏坐标轴:plt.axis('off')
15.4 使用Plotly模拟掷骰子
Plotly支持交互式图表,适合动态数据展示(如直方图)。
1. 安装Plotly:
pip install plotly
2. 模拟掷骰子:
from random import randint
class Die:
def __init__(self, sides=6):
self.sides = sides
def roll(self):
return randint(1, self.sides)
# 掷骰子1000次
die = Die()
results = [die.roll() for _ in range(1000)]
3.模拟绘制直方图
import plotly.express as px
fig = px.histogram(results, nbins=6, title="Dice Roll Results")
fig.update_layout(xaxis_title="Result", yaxis_title="Frequency")
fig.show()
优势:
- 鼠标悬停显示具体数值。
- 支持缩放、拖动等交互操作。
15.5 小结
本章核心技能:
1. 折线图:分析数据趋势。
2. 散点图:探索变量相关性。
3. 随机游走:模拟与可视化结合。
4. Plotly:交互式图表提升展示效果。
更多推荐
所有评论(0)