gpt4 book ai didi

python - 绘制由整个数据生成的图像的某些部分

转载 作者:行者123 更新时间:2023-12-01 06:41:12 25 4
gpt4 key购买 nike

下面的简单代码可根据股票数据绘制烛台图,显示 60 天移动平均线。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc
from mpl_finance import candlestick_ohlc

data = pd.read_csv('C:\\AAPL.csv')

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = fig.add_subplot(111)

data['MA60'] = data['Close'].rolling(window=60).mean()

cl =candlestick2_ohlc(ax=ax1,opens=data['Open'],
highs=data['High'],lows=data['Low'],
closes=data['Close'],width=0.4, colorup='#77d879',
colordown='#db3f3f')

ax1.set_xticks(np.arange(len(data)))
ax1.set_xticklabels(data['Date'], fontsize=6, rotation=-90)
ax2.plot(data.Date, data['MA60'], label='MA_60')

plt.show() # plt.show() shall be after "plt.savefig" otherwise outputs an empty image file.

上面的代码看起来很笨拙,但工作正常。

数据有 90 行,因此显示 60 天移动平均值没有问题。

但我只想要图表的一部分,即最近 45 天。

如果代码仅读取和使用最近 45 天的数据,则无法生成 60MA 的图表。

所以我想使用整个 90 天(所以有 60MA)进行制作,并且只显示并保存图像的右半部分。

plt.savefig('C:\\AAPL.png')
img = plt.imread('C:\\AAPL.png')
print(img.shape) # (480, 640, 4)
img_cropped = img[:, 320:, :] # right half of the image
img_cropped.savefig('C:\\AAPL-1.png')

没效果。

什么是正确且得体的方法,可以从整个数据生成图像的某些部分?谢谢。

最佳答案

你已经非常接近了,你只是在最后一行出错了!当您使用 plt.imread() 重新加载绘图时它变成了图像而不是数字,所以你必须使用 plt.imsave()将其保存在最后一行:

plt.imsave('result.png',img_cropped)  

关于python - 绘制由整个数据生成的图像的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59449783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com