请帮我写一段python代码,使用matplotlib绘制一个由两个折线图和两个柱状图作为子图构成的2*2图表,用以反应一个csv文件中的四列数据情况
时间: 2024-03-04 11:48:16 浏览: 67
好的,下面是一份实现代码,可以根据你的需求稍加修改:
```python
import matplotlib.pyplot as plt
import pandas as pd
# 读取csv文件
data = pd.read_csv('data.csv')
# 创建画布和子图
fig, axs = plt.subplots(2, 2)
# 绘制第一个子图,折线图
axs[0, 0].plot(data['x'], data['y1'], 'r-', label='y1')
axs[0, 0].plot(data['x'], data['y2'], 'b-', label='y2')
axs[0, 0].set_xlabel('x')
axs[0, 0].set_ylabel('y')
axs[0, 0].legend()
# 绘制第二个子图,柱状图
axs[0, 1].bar(data['x'], data['y1'], color='r', alpha=0.5, label='y1')
axs[0, 1].bar(data['x'], data['y2'], color='b', alpha=0.5, label='y2')
axs[0, 1].set_xlabel('x')
axs[0, 1].set_ylabel('y')
axs[0, 1].legend()
# 绘制第三个子图,折线图
axs[1, 0].plot(data['x'], data['y3'], 'g-', label='y3')
axs[1, 0].plot(data['x'], data['y4'], 'm-', label='y4')
axs[1, 0].set_xlabel('x')
axs[1, 0].set_ylabel('y')
axs[1, 0].legend()
# 绘制第四个子图,柱状图
axs[1, 1].bar(data['x'], data['y3'], color='g', alpha=0.5, label='y3')
axs[1, 1].bar(data['x'], data['y4'], color='m', alpha=0.5, label='y4')
axs[1, 1].set_xlabel('x')
axs[1, 1].set_ylabel('y')
axs[1, 1].legend()
# 调整子图之间的距离和布局
fig.subplots_adjust(hspace=0.4, wspace=0.4)
# 显示图形
plt.show()
```
请注意,代码中的数据来源于一个名为`data.csv`的文件,你需要将其替换为你自己的csv文件名,并且确保csv文件中的列名和代码中的列名一致。
阅读全文