情节:如何向烛台图表增加交易量? [英] Plotly: How to add volume to a candlestick chart?

查看:28
本文介绍了情节:如何向烛台图表增加交易量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码:

从plotly.offline

 导入init_notebook_mode,iplot,iplot_mpldef plot_train_test(train, test, date_split):数据= [烛台(x = train.index,打开= train ['open'],高= train ['high'],低= train ['low'],关闭= train ['close'],名称='火车'),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','线':{'颜色':'rgb(0,0,0)','宽度':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','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['音量'],name='火车'),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','线':{'颜色':'rgb(0,0,0)','宽度':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','text': '训练数据'}]}图=图(数据=数据,布局=布局)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}]])#包括带有rangeselector的烛台fig.add_trace(go.Candlestick(x = df ['Date'],open=df['AAPL.Open'], high=df['AAPL.High'],低= df ['AAPL.Low'],关闭= df ['AAPL.Close']),secondary_y = True)# 包括卷的 go.Bar 跟踪fig.add_trace(go.Bar(x = df ['Date'],y = df ['AAPL.Volume']),secondary_y = False)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:

  1. fig = make_subplots(specs=[[{"secondary_y": True}]])
  2. fig.add_traces(go.Candlestick(...), secondary_y=True)
  3. 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()

这篇关于情节:如何向烛台图表增加交易量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆