2017-08-28 9 views
1

Ich frage mich, ob es möglich ist, eine Fehlerbalkenserie auf eine Referenz zu setzen. Was ich tun möchte, ist Referenzzellen mit den bereits berechneten Fehlerwerten. und dann wird es über den Balkendiagrammen angezeigt.Openpyx Balkendiagramm Fehlerbalken

Ich fand eine ähnliche Frage, wo sie eine Version von dem zu tun scheinen, was ich versuche, aber wenn ich ihr Beispiel bearbeite, erhalte ich einen Fehler. Jeder Rat würde sehr geschätzt werden. Vielen Dank für Ihre Zeit.

Beispiel dessen, was ich die grafische Darstellung und Fehler wollen Bars wie enter image description here Fehler suchen:

ähnliche Frage erwartete Klasse 'openpyxl.chart.error_bar.ErrorBars':

Typeerror openpyxl chart error bar styles

Meine aktuellen Code

  chart1 = BarChart() 
      chart1.type = "col" 
      chart1.height = 10 
      chart1.width = col + 7 
      chart1.title = name 

      data = Reference(ws, min_col=4, min_row=23, max_col=17) 
      cats = Reference(ws, min_col=4, min_row=29, max_col = 17) 
      eBars = Reference(ws, min_col=4, min_row=26, max_col=17) 

      s= Series(data) 

      series = SeriesFactory(data, title="y direction error") 
      series.errBars = eBars 

      chart1.append(s) 
      chart1.append(series) 
      chart1.legend = None 
      chart1.set_categories(cats) 

      chart1.x_axis.tickLblPos = "low" 
      #chart1.x_axis.tickLblSkip = 0 

      chart1.shape = 10 
      ws.add_chart(chart1, "C3") 

Antwort

1

Comment: ... setting a reference to the plus and minus

ich Ihren Punkt sehen, ersetzen numLit mit numRef:

NumDataSource/NumRef

class openpyxl.chart.data_source.NumDataSource(numRef=None, numLit=None) 
    `numLit` Values must be of type <class ‘openpyxl.chart.data_source.NumData’> 
    `numRef` Values must be of type <class ‘openpyxl.chart.data_source.NumRef’> 
eBarsNumDataSource = NumDataSource(NumRef(eBars)) 
series.errBars = ErrorBars(errDir='y', errValType='cust', plus=eBarsNumDataSource, minus=eBarsNumDataSource) 

Question: TypeError: expected class 'openpyxl.chart.error_bar.ErrorBars'

Ihre eBars ist der Typ Reference, aber Sie benötigen den Typ openpyxl.chart.error_bar.ErrorBars.

class openpyxl.chart.error_bar.ErrorBars

class openpyxl.chart.error_bar.ErrorBars(
    errDir=None, 
    errBarType='both', 
    errValType='fixedVal', 
    noEndCap=None, plus=None, minus=None, val=None, spPr=None, extLst=None) 

Sie müssen mindestens die folgenden Parameter:

ErrorBars(errDir=Value must be one of {‘x’, ‘y’}, 
      plus=Values must be of type <class ‘openpyxl.chart.data_source.NumDataSource’>, 
      minus=Values must be of type <class ‘openpyxl.chart.data_source.NumDataSource’>, 
     ) 

Folgen def list2errorbars(... in der verknüpften ähnlichen Frage.

+0

Vielen Dank für Ihre Antwort! Bin ich falsch oder brauche ich die Fehlerwerte für die 'def list2errorbars (...' Funktion zu funktionieren? Die Art und Weise, wie diese Blattarbeit Excel macht alle Berechnungen und dann die Grafik und Fehlerbalken sind alle referenziert. Gibt es einen Weg um es so einzurichten? Im Moment scheint es, dass die Bars, wie ein Kopf der Zeit vs referenziert berechnet werden und einen Verweis auf die "plus" und "minus". Vielen Dank noch einmal für Ihre Antwort !! – laxer

+0

Das hat geklappt super !! Vielen Dank für die Hilfe und die tolle Erklärung! – laxer