Plotly: How to add volume to a candlestick chart(Plotly:如何向烛台图添加交易量)
问题描述
代码:
from plotly.offline import init_notebook_mode, iplot, iplot_mpldef plot_train_test(train, test, date_split):数据 = [Candlestick(x=train.index, open=train['open'], high=train['high'], low=train['low'], close=train['close'],name='火车'),Candlestick(x=test.index, open=test['open'], high=test['high'], low=test['low'], close=test['close'],name='test')]布局 = {形状":[{'x0':date_split,'x1':date_split,'y0':0,'y1':1,'xref':'x','yref':'paper','line': {'color': 'rgb(0,0,0)', 'width': 1}}],'annotations': [{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'left','text': ' 测试数据'},{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'right', 'text': '训练数据'}] }图=图(数据=数据,布局=布局)iplot(图)上面的代码没问题.但是现在我想在这个烛台图表中成交量"
代码:
from plotly.offline import init_notebook_mode, iplot, iplot_mpldef plot_train_test(train, test, date_split):data = [Candlestick(x=train.index, open=train['open'], high=train['high'], low=train['low'], close=train['close'],volume=train['卷'],名称='火车'),Candlestick(x=test.index, open=test['open'], high=test['high'], low=test['low'],close=test['close'],volume=test['volume'],name='测试')]布局 = {形状":[{'x0':date_split,'x1':date_split,'y0':0,'y1':1,'xref':'x','yref':'paper','line': {'color': 'rgb(0,0,0)', 'width': 1}}],注释":[{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'left','text': '测试数据'},{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'right','文本':'训练数据'}]}图=图(数据=数据,布局=布局)iplot(图)错误:
<块引用>ValueError:为类型对象指定的属性无效plotly.graph_objs.Candlestick: '音量'
您还没有提供完整的代码片段和数据示例,所以我将不得不提出一个基于示例的解决方案
完整代码:
导入 plotly.graph_objects从 plotly.subplots 导入 make_subplots将熊猫导入为 pd# 数据df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')# 创建带有辅助 y 轴的图形fig = make_subplots(specs=[[{"secondary_y": True}]])# 包含带有范围选择器的烛台fig.add_trace(go.Candlestick(x=df['Date'],开=df['AAPL.Open'],高=df['AAPL.High'],低=df['AAPL.Low'], 关闭=df['AAPL.Close']),次要_y =真)# 包括卷的 go.Bar 跟踪fig.add_trace(go.Bar(x=df['Date'], y=df['AAPL.Volume']),次要_y=假)fig.layout.yaxis2.showgrid=False图.show()code:
from plotly.offline import init_notebook_mode, iplot, iplot_mpl
def plot_train_test(train, test, date_split):
data = [Candlestick(x=train.index, open=train['open'], high=train['high'], low=train['low'], close=train['close'],name='train'),
Candlestick(x=test.index, open=test['open'], high=test['high'], low=test['low'], close=test['close'],name='test')
]
layout = {
'shapes': [
{'x0': date_split, 'x1': date_split, 'y0': 0, 'y1': 1, 'xref': 'x', 'yref': 'paper',
'line': {'color': 'rgb(0,0,0)', 'width': 1}}],
'annotations': [{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'left','text': ' test data'},
{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'right', 'text': 'train data '}] }
figure = Figure(data=data, layout=layout)
iplot(figure)
The above code is ok.But now I want to 'volume' in this candlestick chart
code:
from plotly.offline import init_notebook_mode, iplot, iplot_mpl
def plot_train_test(train, test, date_split):
data = [Candlestick(x=train.index, open=train['open'], high=train['high'], low=train['low'], close=train['close'],volume=train['volume'],name='train'),
Candlestick(x=test.index, open=test['open'], high=test['high'], low=test['low'],close=test['close'],volume=test['volume'],name='test')]
layout = {
'shapes': [
{'x0': date_split, 'x1': date_split, 'y0': 0, 'y1': 1, 'xref': 'x', 'yref': 'paper',
'line': {'color': 'rgb(0,0,0)', 'width': 1}}
],
'annotations': [
{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'left',
'text': ' test data'},
{'x': date_split, 'y': 1.0, 'xref': 'x', 'yref': 'paper', 'showarrow': False, 'xanchor': 'right',
'text': 'train data '}
]
}
figure = Figure(data=data, layout=layout)
iplot(figure)
error:
ValueError: Invalid property specified for object of type plotly.graph_objs.Candlestick: 'volume'
You haven't provided a complete code snippet with a data sample, so I'm going to have to suggest a solution that builds on an example here.
In any case, you're getting that error message simply because go.Candlestick does not have a Volume attribute. And it might not seem so at first, but you can easily set up go.Candlestick as an individual trace, and then include an individual go.Bar() trace for Volumes using:
fig = make_subplots(specs=[[{"secondary_y": True}]])fig.add_traces(go.Candlestick(...), secondary_y=True)fig.add_traces(go.Bar(...), secondary_y=False)
Plot:
Complete code:
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd
# data
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])
# include candlestick with rangeselector
fig.add_trace(go.Candlestick(x=df['Date'],
open=df['AAPL.Open'], high=df['AAPL.High'],
low=df['AAPL.Low'], close=df['AAPL.Close']),
secondary_y=True)
# include a go.Bar trace for volumes
fig.add_trace(go.Bar(x=df['Date'], y=df['AAPL.Volume']),
secondary_y=False)
fig.layout.yaxis2.showgrid=False
fig.show()
这篇关于Plotly:如何向烛台图添加交易量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Plotly:如何向烛台图添加交易量
基础教程推荐
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
