2017-08-28 2 views
1

Je me demandais s'il était possible de définir une série de barres d'erreur sur une référence. Ce que je voudrais faire, c'est des cellules de référence avec les valeurs d'erreur déjà calculées. puis l'afficher au-dessus des graphiques à barres.Openpyxl Diagramme à barres Barres d'erreur

J'ai trouvé une question similaire où ils ont semblé faire une version de ce que j'essaie, mais quand j'édite leur exemple, je reçois une erreur. Tout conseil serait grandement apprécié. Merci pour votre temps.

Exemple de ce que je veux le graphique et les barres d'erreur pour ressembler enter image description here Erreur:

TypeError: classe attendue '' openpyxl.chart.error_bar.ErrorBars

Question similaire openpyxl chart error bar styles

Mon code actuel

  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") 

Répondre

1

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

Je vois votre point, remplacer numLit avec 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'

Votre eBars est de type Reference mais vous avez besoin du type 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) 

Vous devez au moins les paramètres suivants:

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’>, 
     ) 

Suivez def list2errorbars(... dans la question similaire liée.

+0

Merci d'avoir répondu! Est-ce que je me trompe ou ai-je besoin des valeurs d'erreur pour que la fonction 'def list2errorbars (...' fonctionne?> La façon dont ces feuilles sont excel fait tous les calculs, puis les barres de graphique et d'erreur sont toutes référencées. pour mettre en place comme ça? En ce moment, il semble que les barres comment calculer une tête de temps par rapport à référencé et en définissant une référence à la «plus» et «moins» Merci encore pour votre réponse! – laxer

+0

Cela a fonctionné Merci beaucoup pour l'aide et l'explication géniale! – laxer