<think>我们使用matplotlib来绘制包含两条折线的折线图。以下是步骤:
1. 导入必要的库(matplotlib.pyplot)
2. 准备数据:两个折线的横坐标和纵坐标数据
3. 创建图形和坐标轴
4. 绘制两条折线,并可以设置不同的颜色、线型、标记等以区分
5. 添加标题、坐标轴标签、图例等
6. 显示图形或保存为图片
参考引用[1]和[3]中的matplotlib示例,我们可以这样做。
注意:如果需要,我们也可以为每个数据点添加数字标签(如引用[1]所示),但这里用户要求的是两条折线,所以我们可以选择是否添加标签。
下面是一个示例代码,绘制两条折线,并添加图例、标题等。</think>在 Python 中绘制包含两条折线的折线图可以使用 Matplotlib 库实现。以下是详细步骤和代码示例:
### 完整代码示例
```python
import matplotlib.pyplot as plt
import numpy as np
# 1. 准备数据
x = np.array([1, 2, 3, 4, 5, 6]) # 横坐标数据
y1 = np.array([3, 5, 9, 8, 11, 6]) # 第一条折线数据
y2 = np.array([2, 7, 4, 10, 5, 9]) # 第二条折线数据
# 2. 创建画布和坐标轴
plt.figure(figsize=(10, 6), dpi=100) # 设置图像大小和分辨率
# 3. 绘制两条折线
plt.plot(x, y1,
label='折线1', # 图例标签
color='blue', # 线条颜色
marker='o', # 数据点标记
linestyle='-', # 实线
linewidth=2) # 线宽
plt.plot(x, y2,
label='折线2',
color='red',
marker='s', # 方形标记
linestyle='--', # 虚线
linewidth=2)
# 4. 添加数据点标签
for i, (a, b) in enumerate(zip(x, y1)):
plt.text(a, b+0.3, f'{b}', ha='center', va='bottom', fontsize=10)
for i, (a, b) in enumerate(zip(x, y2)):
plt.text(a, b+0.3, f'{b}', ha='center', va='bottom', fontsize=10)
# 5. 添加标题和标签
plt.title('双折线对比图', fontsize=14, pad=20)
plt.xlabel('X轴标签', fontsize=12)
plt.ylabel('Y轴标签', fontsize=12)
# 6. 添加图例和网格
plt.legend(loc='best', fontsize=10) # 自动选择最佳位置
plt.grid(True, linestyle='--', alpha=0.7) # 添加网格线
# 7. 调整坐标轴范围
plt.xlim(0.5, 6.5)
plt.ylim(0, 12)
# 8. 显示和保存图像
plt.tight_layout() # 自动调整布局
plt.savefig('dual_line_plot.png', dpi=300) # 保存高分辨率图像
plt.show()
```
### 关键参数说明:
1. **线条样式**:
- `color`:线条颜色(如 'blue', 'red', '#FF5733')
- `linestyle`:线型('-' 实线, '--' 虚线, ':' 点线, '-.' 点划线)
- `linewidth`:线宽(默认1.5)
- `marker`:数据点标记('o' 圆圈, 's' 方形, '^' 三角形, 'D' 菱形)
2. **数据标签**:
```python
plt.text(x, y, '文本',
ha='center', # 水平对齐(left/center/right)
va='bottom', # 垂直对齐(top/center/bottom)
fontsize=10)
```
3. **图例设置**:
- `loc`参数:'best'(自动最佳位置), 'upper right', 'lower left'等
- `fontsize`:图例字体大小
### 进阶技巧:
1. **使用不同坐标轴**(当数据量级差异大时):
```python
fig, ax1 = plt.subplots(figsize=(10,6))
ax1.plot(x, y1, 'b-', label='折线1')
ax1.set_ylabel('折线1轴', color='b')
ax2 = ax1.twinx() # 共享x轴创建第二个y轴
ax2.plot(x, y2, 'r--', label='折线2')
ax2.set_ylabel('折线2轴', color='r')
```
2. **添加数据标记**:
```python
plt.plot(x, y1, marker='o', markersize=8,
markerfacecolor='white', # 标记填充色
markeredgecolor='blue', # 标记边缘色
markeredgewidth=1.5) # 边缘线宽
```
3. **自定义样式**:
```python
plt.style.use('seaborn-darkgrid') # 使用预定义样式
# 可用样式:'ggplot', 'bmh', 'dark_background', 'fivethirtyeight'等
```
### 输出效果:
代码将生成一个包含两条折线的专业图表:
- 蓝色实线表示第一条数据
- 红色虚线表示第二条数据
- 每个数据点上方显示数值标签
- 包含网格线、图例和坐标轴标签
- 图片保存为高分辨率PNG文件(300dpi)