请改进这段代码,import matplotlib.pyplot as plt import csv import os os.environ['MPLCONFIGDIR'] = '/tmp/' with open('AppleData.csv', 'r') as f: reader = csv.DictReader(f) data = [row for row in reader] # 从 data 列表中提取各个列的数据 dates = [row['Date'] for row in data] close_prices = [float(row['Close']) for row in data] volumes = [float(row['Volume']) for row in data] open_prices = [float(row['Open']) for row in data] high_prices = [float(row['High']) for row in data] low_prices = [float(row['Low']) for row in data] # 创建一个包含两个子图的图像 fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(16, 8), sharex=True) # 绘制第一个子图:股价走势图 ax1.plot(dates, close_prices, label='Close') ax1.plot(dates, open_prices, label='Open') ax1.plot(dates, high_prices, label='High') ax1.plot(dates, low_prices, label='Low') ax1.legend() ax1.set(title='AAPL Stock Prices', ylabel='Price ($)') # 绘制第二个子图:成交量图 ax2.bar(dates, volumes) ax2.set(xlabel='Date', ylabel='Volume') # 显示图像 plt.show()
时间: 2023-12-09 22:06:14 浏览: 107
import numpy as np import matplotlib.pyplot as plt import math
这段代码可以进一步改进,例如使用 Pandas 库对数据进行处理,使代码更加简洁和易读。这里给出一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('AppleData.csv')
# 将 Date 列转换为日期格式
df['Date'] = pd.to_datetime(df['Date'])
# 设置 Date 列为索引
df.set_index('Date', inplace=True)
# 创建一个包含两个子图的图像
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(16, 8), sharex=True)
# 绘制第一个子图:股价走势图
ax1.plot(df.index, df['Close'], label='Close')
ax1.plot(df.index, df['Open'], label='Open')
ax1.plot(df.index, df['High'], label='High')
ax1.plot(df.index, df['Low'], label='Low')
ax1.legend()
ax1.set(title='AAPL Stock Prices', ylabel='Price ($)')
# 绘制第二个子图:成交量图
ax2.bar(df.index, df['Volume'])
ax2.set(xlabel='Date', ylabel='Volume')
# 显示图像
plt.show()
```
这段代码使用 Pandas 库读取了 CSV 文件,并将 Date 列设置为索引。然后使用 Matplotlib 库绘制了股价走势图和成交量图。相比原始代码,这段代码更加简洁和易读,同时也使得数据处理更加方便。
阅读全文