2017-09-14 8 views
2

Ich habe mein Kreisdiagramm erstellt, aber jetzt ich eine Reihe von Zellen wie folgt bin mit:Erstellen von Kreisdiagramm in Python

chart3.add_series({ 
    'name': 'Pie data', 
    'categories': '=Pivots!$A$3:$A$10', 
    'values':  '=Pivots!$F$3:$F$10'}) 

, die mir ein Kreisdiagramm mit den Kategorien gibt, die in A3-A10 zu finden sind und Werte, die den Zellen F3-F10 entsprechen. Das Problem, das ich habe, ist leider, ich werde nicht immer Daten in jeder dieser Zellen haben. daher kann ich Daten in einem Arbeitsblatt mit Kategorien und Werten haben, die von A3-A6 und Werten = F3-F6 reichen und manchmal nur Daten haben, die von A3-A9 und Werten = F3-F9 reichen. Mein Problem ist, wenn ich meine Legende für die verschiedenen Arbeitsblätter zeige, die Felder fehlen, und ich frage mich, ob es eine Möglichkeit war, nur die Länge von A zu bekommen, um die Kategorien und die Länge von F3 zu erhalten, wenn meine Legende ist Wenn es angezeigt wird, werden nur die Zeilen mit Daten angezeigt.

Antwort

2

Angenommen, es ist eine Option für Sie, die Zeilen ohne Daten dynamisch auszublenden, dann gibt es eine ziemlich einfache Lösung.

Ich habe einige Beispieldaten überarbeitet, die in den xlsxwriter-Dokumenten verwendet werden, und dann nach Nan-Werten gesucht. Wenn es welche gibt, dann sind diese ausgeblendet und somit nicht im Tortendiagramm.

import xlsxwriter 
import pandas as pd 

headings = ['Category', 'Values'] 
data = [ 
['Apple', 30],['Cherry', 20],['Pecan',15],['Blueberry', 10],['Pumpkin', 10], 
['Mince', float('nan')],['Custard', 3],['Potato', 2], 
] 


pies = pd.DataFrame(data, columns = headings) 

nan_rows = pies.loc[pies['Values'].isnull()].index.values 
hide_rows = nan_rows + 2 

workbook = xlsxwriter.Workbook('test.xlsx', {'strings_to_numbers': True, 
              'strings_to_formulas': True, 
              'nan_inf_to_errors': True}) 

ws = workbook.add_worksheet('Pivots') 

ws.write('A2', headings[0]) 
ws.write('F2', headings[1]) 
ws.write_column('A3', pies['Category']) 
ws.write_column('F3', pies['Values']) 


chart3 = workbook.add_chart({'type': 'pie'}) 

chart3.add_series({ 
'name': 'Pie data', 
'categories': '=Pivots!$A$3:$A$10', 
'values':  '=Pivots!$F$3:$F$10'}) 

chart3.set_title({'name': 'Popular Pie Types'}) 

chart3.set_style(10) 
ws.insert_chart('G11', chart3, {'x_offset': 25, 'y_offset': 10}) 

#This is where we hide the rows in list called hide_rows 
for row_position in hide_rows: 
    ws.set_row(row_position, None, None, {'hidden': True}) 

workbook.close() 

enter image description here

Verwandte Themen