Python Plotly-对齐Y轴以进行散布和条形图

Python Plotly-对齐Y轴以进行散布和条形图,python,plotly,Python,Plotly,我正在尝试创建一个带有散点和图形元素的绘图仪。这一切都进行得很顺利,但有一个问题-两个Y轴没有围绕0对齐 我尝试过使用不同的属性,比如“mirror”和tick0,我也尝试过在plotly的站点上使用这些示例,但大多数情况下都是具有相同图形类型的多个y轴 我能做些什么来解决这个问题 import utils import pandas as pd import plotly.plotly as py import plotly.graph_objs as go import plotly

我正在尝试创建一个带有散点和图形元素的绘图仪。这一切都进行得很顺利,但有一个问题-两个Y轴没有围绕0对齐

我尝试过使用不同的属性,比如“mirror”和tick0,我也尝试过在plotly的站点上使用这些示例,但大多数情况下都是具有相同图形类型的多个y轴

我能做些什么来解决这个问题

import utils
import pandas as pd
import plotly.plotly as py
import plotly.graph_objs as go
import plotly




pd_data ['dt'] = ... dates
pd_data['price'] = ... prices
pd_data['car'] = ... cars

price = go.Scatter(
    x = pd_data['dt'],
    y = pd_data['price'],
    mode = 'lines',
    name = 'Price',
    xaxis = 'x',
    yaxis='y1',     
    marker = dict(
        color = utils.prep_color_string('orange'),
    ),
    line = dict(
        width = utils.line_width,
    ),
)

car = go.Bar(
    x = pd_data['dt'],
    y = pd_data['car'],
    #mode = 'lines',
    name = 'Cars',
    xaxis = 'x',
    yaxis='y2',
    marker = dict(
        color = utils.prep_color_string('light_green'),
    ),
    #line = dict(
    #   width = utils.line_width,
    #),
)

data = [price, car]

layout = dict(

    title = 'Price/Car',

    geo = dict(
        showframe = True,
        showcoastlines = True,
        projection = dict(
            type = 'Mercator'
        )
    ),

    yaxis=dict(
        title = 'Price',
        tickprefix = "$",
        overlaying='y2',
        anchor = 'x'            
    ),

    yaxis2=dict(
        title = 'Car',
        dtick = 1,
        #tickprefix = "",
        side = 'right',
        anchor = 'x',

    ),

)

fig = dict( data=data, layout=layout)
div = plotly.offline.plot( fig, validate=False, output_type = 'file',filename='graph.html' ,auto_open = False)


我也一直在努力解决这个问题。完全相同的问题,但我使用的是R。我解决这个问题的方法是对yaxis和yaxis2布局使用rangemode=“tozero”

我想在你的情况下,它会是这样的:

layout = dict(

    title = 'Price/Car',

    geo = dict(
        showframe = True,
        showcoastlines = True,
        projection = dict(
            type = 'Mercator'
        )
    ),

    yaxis=dict(
        title = 'Price',
        tickprefix = "$",
        overlaying='y2',
        anchor = 'x',
        rangemode='tozero'            
    ),

    yaxis2=dict(
        title = 'Car',
        dtick = 1,
        #tickprefix = "",
        side = 'right',
        anchor = 'x',
        rangemode = 'tozero'


    ),

)

让我知道这是否适合您。

如果您能提供MCVE,您将更快地得到一个好答案。尝试在多个y轴上对齐0时,这对我来说很有效,但对我来说不起作用。我想这是因为我的数据集中有负值。