Python 3.x 如何使用子地块组合两个x轴

Python 3.x 如何使用子地块组合两个x轴,python-3.x,plotly,Python 3.x,Plotly,我有两个情节(蜡烛和酒吧)。我想将它们组合在同一子批次中(顶部的x轴表示体积,底部的x轴表示日期),但当我尝试将两者组合在同一子批次中(行=2,列=1)时,结果不是预期的结果 import plotly from plotly import subplots import random import pandas as pd import plotly.graph_objects as go fig = make_subplots(rows=3, cols=2) high = 40

我有两个情节(蜡烛和酒吧)。我想将它们组合在同一子批次中(顶部的x轴表示体积,底部的x轴表示日期),但当我尝试将两者组合在同一子批次中(行=2,列=1)时,结果不是预期的结果

import plotly  from plotly 
import subplots 
import random 
import pandas as pd 
import plotly.graph_objects as go

fig = make_subplots(rows=3, cols=2)

high = 40
low = 5
dev = 1
days = 18

fake_market = []
for each in range(days):
    ohlc = []
    ohlc.append(each)
    if each == 0:
        o = random.randrange(low, high)
        ohlc.append(o)
    else:
        ohlc.append(c) #I know
    h = random.randrange(o, high)
    ohlc.append(h)
    l = random.randrange(low, o)
    ohlc.append(l)
    c = random.randrange(l, h)
    ohlc.append(c)
    fake_market.append(ohlc)

fake_volume = [[x, random.randrange(1, 200)] for x in range(low, (high+1))]
df = pd.DataFrame(fake_market, columns=["Date", "Open", "High", "Low", "Close"])
df2 = pd.DataFrame(fake_volume, columns=["Volume", "Price"])

fecha = ['2019-03-22', '2019-03-23', '2019-03-24', '2019-03-25',
           '2019-03-26', '2019-03-27', '2019-03-28', '2019-03-29',
           '2019-03-30', '2019-03-31', '2019-04-01', '2019-04-02',
           '2019-04-03', '2019-04-04', '2019-04-05', '2019-04-06',
           '2019-04-07', '2019-04-08']

candle =go.Candlestick(
            x=fecha,
            open=[str(x) for x in df.Open.to_list()],
            high=[str(x) for x in df.High.to_list()],
            low=[str(x) for x in df.Low.to_list()],
            close=[str(x) for x in df.Close.to_list()],
            visible=True,
            showlegend=True, 
            xaxis='x3', 
            yaxis ='y3')
        
vol_bar = go.Bar(
                x=[str(x) for x in df2.Price.to_list()],
                y=[str(x) for x in df2.Volume.to_list()], 
                xaxis='x4', 
                yaxis ='y4',
                name='volume', 
                orientation="h", 
                opacity=0.4, marker=dict(
                        color='rgba(246, 78, 139, 0.6)', line=dict(color='rgba(246, 78, 139, 1.0)', width=0.1)))

fig.add_trace(candle, row=2, col=1)
fig.add_trace(vol_bar, row=2, col=1)

fig.update_layout(
    yaxis3=dict(
        title="yaxis3 title", 
        titlefont=dict(
            color="#1f77b4"
        ),
        tickfont=dict(
            color="#1f77b4"
        )
    ),
    yaxis4=dict(
        title="yaxis4 title", side='right',
        titlefont=dict(
            color="#1f77b4"
        ),
        tickfont=dict(
            color="#1f77b4"
        )
    ),
    xaxis3=dict(
        title="xaxis3 volume", side='top', overlaying='x',
        titlefont=dict(
            color="#9467bd"
        ),
        tickfont=dict(
            color="#9467bd"
        )),
    xaxis4=dict(
        title="xaxis4 date", side='bottom', 
        titlefont=dict(
            color="#9467bd"
        ),
        tickfont=dict(
            color="#9467bd"
        ))     
)

fig.update_xaxes(rangeslider_visible=False)
fig.show()
这些曲线图如下所示: 绘图:

结果:结果:

预期的绘图:预期的绘图:


显然,x轴在混合,这就是获得扭曲图形的原因。

您可以将其添加到代码顶部,以便其他人可以轻松尝试(编辑队列已满)
从plotly导入子地块导入随机导入熊猫作为pd导入plotly。graph_对象作为go
是的,您有所有理由。此处缺少代码:从plotly.offline导入plot导入plotly.graph\u对象作为go导入随机导入熊猫作为pd从plotly.subplot导入make\u子地块