我目前正在使用matplotlib绘制股票价格列表,但是我不确定如何在图表中正确显示相应的日期。 csv中的数据是每日股票价格,但我只想在x轴上显示每2周的日期。股票日期和价格在2个不同的列表中,是否可以这样做?或者我应该使用字典而是尝试以这种方式绘制它?
import csv
import sys
import matplotlib.pyplot as plt
def main():
filename = 'somefile.csv'
with open(filename, newline='') as f:
reader = csv.reader(f)
next(reader, None) # skips the column headers
dates = list()
prices = list()
try:
for row in reader:
dates.append(row[0])
prices.append(float(row[1])) # converts prices to floats and saves in a new list.
ma_window = 7
reverse_prices = prices[::-1]
average_reverse_prices = []
r = len(prices) - ma_window + 1
for i in range(r):
interval = reverse_prices[i:(i + ma_window)]
average = float(sum(interval)) / ma_window # might want to round to 2 decimal places
average_reverse_prices.append(average)
average_prices = average_reverse_prices[::-1]
print(average_prices)
plt.plot(average_prices)
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()
except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
if __name__ == '__main__':
main()
答案 0 :(得分:1)
你应该从matplotlib网站check out this example。 您似乎应该能够执行以下操作:
plt.xticks(range(0,len(average_prices), 14), dates[0:len(average_prices):14])
答案 1 :(得分:0)
目前你还没有在图中使用你的x轴数据。您只提交" average_prices"到plt.plot,所以它只会使用x轴的索引值。如果您希望x轴显示日期信息,则应将日期数据格式化为datetime objects。这是一个example of how to format the x-axis刻度线,并在x轴上绘制日期。
的评论