2017-08-11 179 views
0

使用Python API來plotly考慮以下MWE畫出散點圖:如何可以繪製單個線條到散點圖?

import plotly.plotly as py 
import plotly.graph_objs 
import plotly.offline 
plotly.offline.init_notebook_mode() 

data = list(range(10)) 
trace = plotly.graph_objs.Scatter(
    x=list(range(len(data))), 
    y=data 
) 
plotly.offline.iplot([trace]) 

enter image description here

如果我現在要一個(比如說)水平線添加到這個情節? 我瀏覽了文檔,例如line and scatterline charts上的部分,但是沒有一個例子看起來像是覆蓋不同的地塊,或者只是繪製直線和類似的形狀。

天真的方法來做到這一點是剛纔添加的行稱爲第二散點圖,如下所示:

import plotly.plotly as py 
import plotly.graph_objs 
import plotly.offline 
plotly.offline.init_notebook_mode() 

data = list(range(10)) 
trace = plotly.graph_objs.Scatter(
    x=list(range(len(data))), 
    y=data 
) 
trace_line = plotly.graph_objs.Scatter(
    x=list(range(len(data))), 
    y=[4] * len(data), 
    mode='lines' 
) 
plotly.offline.iplot([trace, trace_line]) 

enter image description here

這種做法似乎不過是次優的:撥作冗長需要添加一條線,它也使我手動「取樣」直線,並且它將線高度添加到鼠標懸停的工具提示上。

有沒有更好的方法來實現這一目標?

+1

你能不只是添加具有所有的相同值的另一個數據集並繪製了嗎? – Jeeter

+0

@Jeeter當然可以,看看我的編輯。我希望有一個比這更好的方法。例如,使用'cufflinks' +'pandas'可以將'hline'和'vline'選項添加到'iplot'中來實現這一點(參見'In [43]'[here](https://plot.ly/IPython中的筆記本電腦/袖釦/))。當只使用'plotly'時,沒有相同的方法嗎? – glS

+0

我其實並沒有太多的經驗,所以我不知道。但希望你找到你的答案! – Jeeter

回答

1

您好,從您的問題我可以看到,你需要劇情形狀的功能,併產生一個水平線的情節。

請找到下面的代碼,做你的問題

代碼顯示在同一張圖:

from plotly.offline import iplot 
import plotly.graph_objs as go 


data = list(range(10)) 
trace = go.Scatter(
    x=list(range(len(data))), 
    y=data 
) 
layout = { 
    'shapes': [ 
     # Line Horizontal 
     { 
      'type': 'line', 
      'x0': 0, 
      'y0': 4, 
      'x1': 10, 
      'y1': 4, 
      'line': { 
       'color': 'rgb(50, 171, 96)', 
       'width': 4 
      }, 
     } 
    ], 
    'showlegend': True 
} 

fig = fig = { 
    'data': [trace], 
    'layout': layout, 
} 


iplot(fig) 

輸出:

plotly shapes

附加參考, NCE:

  1. plotly shapes examples

  2. plotly shapes reference

+0

正是我所期待的,謝謝!順便說一句,爲什麼你需要爲此導入'cufflinks','plotly.tools'和'download_plotlyjs'? – glS

+0

@glS我編輯了我的代碼,這些代碼是從另一個單元格複製而來的,請參閱更新後的代碼。 –