【发布时间】:2017-10-28 16:59:24
【问题描述】:
从 yahoo-finance 导入数据后尝试绘制烛台系列。我正在使用 python 2.7
我已经绘制了一个系列,我想添加与烛台相同的一个,但我不知道该怎么做:
import matplotlib.pyplot as plt
from matplotlib.finance import candlestick2_ohlc
#Reset the index to remove Date column from index
df_ohlc = data.reset_index()
#Naming columns
df_ohlc.columns = ["Date","Open","High",'Low',"Close", "Adj Close", "Volume"]
#Normal plot
ax1 = plt.subplot()
ax1.plot(df_ohlc["Date"], df_ohlc["Close"], label = "Price", color="blue", linewidth=2.0)
#Candle plot
candlestick2_ohlc(ax1,df_ohlc['Open'],df_ohlc['High'],df_ohlc['Low'],df_ohlc['Close'],width=0.6)
如果我单独绘制烛台,它看起来不错,但 x 轴是整数列表。
如果我在将df_ohlc["Date"] 转换为浮动然后重新转换为datetime 之后单独绘制烛台,它会用正确的 x 轴绘制系列,但即使未为这些日期定义系列,周末也会有间隙。
有没有办法同时绘制两个系列?我计划添加更多系列,如移动平均线、OLS、布林线等...
【问题讨论】:
-
据我了解,您希望绘制没有间隙的烛台图并制作 xlables 实际日期而不是整数。为了做到这一点,在你的数据数组中用从 0 开始的整数替换日期。这样,周末的间隔就会消失。然后用日期替换整数创建包含日期的列表并设置 xticklabels。你可以使用 'set_xticklabels' 方法来做。
-
我要试试这个。谢谢
-
所以我尝试了,如果我使用整数列表,我可以无间隙地绘制线和烛台。但是当我使用带有列表的 ax1.set_xticklabels 来更改名称时,刻度是完全静态的,如果我放大,它们就不会移动。仅显示列表中的前 10 个元素,其余的从不显示。
-
您可以根据需要自定义 xticks 列表。当然,设置日期列表 xticklabels 的前 10 个元素是不可取的。为了避免这种情况,您应该从列表中选择十个索引,将您的列表分成 10 个相等的部分。我建议您为此任务使用 numpy linspace 函数。
标签: python matplotlib plot candlestick-chart