我已经使用散景绘制了烛台。现在我想在同一张图表中绘制体积蜡烛?我如何做到这一点。我正在从 csv 读取具有开盘、高、低、收盘和成交量的数据。
问问题
1434 次
1 回答
0
这是烛台官方文档示例的扩展。
如果您还没有数据,请先运行此代码段。
import bokeh
bokeh.sampledata.download()
如果数据可用,您可以像以前一样创建烛台。使用 gridplot 函数,您可以将第一个图形与第二个图形连接起来。
from math import pi
import pandas as pd
from bokeh.plotting import figure, output_notebook, show
from bokeh.layouts import gridplot
from bokeh.sampledata.stocks import MSFT
output_notebook()
df = pd.DataFrame(MSFT)[:50]
df["date"] = pd.to_datetime(df["date"])
inc = df.close > df.open
dec = df.open > df.close
w = 12*60*60*1000 # half day in ms
TOOLS = "pan,wheel_zoom,box_zoom,reset,save"
p1 = figure(x_axis_type="datetime", tools=TOOLS, plot_width=700, plot_height=300, title = "MSFT Candlestick with Volume")
p1.xaxis.visible = False
p1.xaxis.major_label_orientation = pi/4
p1.grid.grid_line_alpha=0.3
p1.segment(df.date, df.high, df.date, df.low, color="black")
p1.vbar(df.date[inc], w, df.open[inc], df.close[inc], fill_color="#D5E1DD", line_color="black")
p1.vbar(df.date[dec], w, df.open[dec], df.close[dec], fill_color="#F2583E", line_color="black")
p2 = figure(x_axis_type="datetime", tools="", toolbar_location=None, plot_width=700, plot_height=200, x_range=p1.x_range)
p2.xaxis.major_label_orientation = pi/4
p2.grid.grid_line_alpha=0.3
p2.vbar(df.date, w, df.volume, [0]*df.shape[0])
show(gridplot([[p1],[p2]]))
为了稍微改变一下外观,图 1 的 x 轴是不可见的,p1.xaxis.visible = False
并且没有为图 2 定义标题。为了将两个图链接在一起,图 1 的 x_range 被传递给图二 unsing x_range=p1.x_range
。
输出是这样的:
于 2020-11-17T22:40:20.257 回答