2016-03-19 72 views
2

散布図とグラフ要素でプロットグラフを作成しようとしています。すべてうまくいくが、1つの問題、2つのY軸が0の周りに並んでいない。Python Plotly - スキャッタとバーのY軸を整列する

私は 'mirror'やtick0などの異なる属性で試してみた。私もplotlyのサイトの例を試してみたが、同じグラフタイプの大部分は複数のy軸です。

これを解決するにはどうすればよいですか?

Image of the graph

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) 
+1

MCVEを提供できる場合は、より迅速な回答が得られます。 http://stackoverflow.com/help/mcve – steven

答えて

5

私もこれで苦労してきました。まったく同じ問題ですが、私は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' 


    ), 

) 

はそれがあなたのために働くなら、私に教えてください。

+0

これもplotly.jsで動作しました – jurasource

+1

これは、複数のy軸に0を揃えようと試みてくれました。 –

関連する問題