簡體   English   中英

Python和Plotly離線:創建(空)圖形並使用for循環添加跟蹤

[英]Python and Plotly offline: create (empty) graph and add traces with for-loop

我是編程新手,我花了很多時間尋找解決方案,但我似乎無法做到正確。 我有一些存儲在字典中的測量數據集。 我想用圖表創建一個圖表,其中顯示了來自測量數據的所有曲線。 我正在嘗試創建一個空圖,然后遍歷字典並將兩個存儲的dataFrames的兩列作為跟蹤添加到每個鍵的圖形中。

我做錯了什么或者我怎么能以另一種方式做到這一點?

import plotly as py
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go    

figure1 = go.Figure()

for key in dictofdf:
 trace1 = go.Scatter(
                      y=df_1['force'], 
                      x=df_1['displacement'], 
                      mode='line',
                      marker=go.Marker(color='rgb(255, 127, 14)'),
                      name='load'
                      )

    trace2 = go.Scatter(
                      y=df_2['force'], 
                      x=df_2['displacement'], 
                      mode='line',
                      marker=go.Marker(color='rgb(55, 137, 3)'),
                      name='unload'
                      )

    figure1.append_trace(trace1,1,1)
    figure1.append_trace(trace2,1,1)

py.offline.iplot(figure1, filename='force-displacement-data', image='jpeg')

有了我到目前為止的代碼,我得到了錯誤

--------------------------------------------------------------------------- TypeError                                 Traceback (most recent call
 last) <ipython-input-42-4ea5d9b8a638> in <module>()
      50                       )
      51 
 ---> 52     figure1.append_trace(trace1,1,1)
      53     figure1.append_trace(trace2,1,1)
      54 

 C:\Users\xxxxx\Anaconda3\lib\site-packages\plotly\graph_objs\graph_objs.py
 in append_trace(self, trace, row, col)
     914                             "Note: the starting cell is (1, 1)")
     915         try:
 --> 916             ref = grid_ref[row-1][col-1]
     917         except IndexError:
     918             raise Exception("The (row, col) pair sent is out of range. "

 TypeError: 'NoneType' object is not subscriptable
  • append_trace中的append_trace適用於子圖,但不適用於常規Figure
  • 您正在迭代字典鍵,但您從不使用其中一個鍵,而是為每個鍵繪制相同的值。 在下面的示例中, key用於name跟蹤。

在此輸入圖像描述

import plotly
plotly.offline.init_notebook_mode()

figure1 = plotly.tools.make_subplots(rows=1, cols=2)

dictofdf = {'measurement1': {'df_1': {'displacement': [1, 2, 3], 
                                      'force': [1, 3, 6]}, 
                             'df_2': {'displacement': [1, 3, 6], 
                                      'force': [5, 7, 9]}
                            }, 
            'measurement2': {'df_1': {'displacement': [1, 4, 5], 
                                      'force': [8, 10 , 12]}, 
                             'df_2': {'displacement': [1, 4, 6], 
                                      'force': [7, 8, 9]}
                            }
           }
for key in dictofdf:
    trace1 = plotly.graph_objs.Scatter(
                      y=dictofdf[key]['df_1']['force'], 
                      x=dictofdf[key]['df_1']['displacement'], 
                      mode='line',
                      marker=plotly.graph_objs.Marker(color='rgb(255, 127, 14)'),
                      name='{}: load'.format(key)
                      )

    trace2 = plotly.graph_objs.Scatter(
                      y=dictofdf[key]['df_2']['force'], 
                      x=dictofdf[key]['df_2']['displacement'], 
                      mode='line',
                      marker=plotly.graph_objs.Marker(color='rgb(55, 137, 3)'),
                      name='{}: unload'.format(key)
                      )

    figure1.append_trace(trace1, 1, 1)
    figure1.append_trace(trace2, 1, 2)
plotly.offline.iplot(figure1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM