Создание круговой диаграммы в питоне

Я создал свою круговую диаграмму, но сейчас я использую ряд таких ячеек:

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

что дает мне круговую диаграмму с категориями, которые находятся в A3-A10, и значениями, соответствующими ячейкам F3-F10. У меня проблема, к сожалению, я не всегда буду иметь данные в каждой из этих ячеек. поэтому у меня могут быть данные на одном листе с категориями и значениями, которые могут варьироваться от A3-A6 и значениями = F3-F6, а иногда они содержат только данные, которые колеблются от A3-A9 и значениями = F3-F9. Моя проблема заключается в том, что когда я показываю свою легенду для разных рабочих листов, у них отсутствуют поля, и мне было интересно, был ли это способ просто получить длину A, чтобы получить категории и длину F3, чтобы получить значения, поэтому, когда моя легенда показывая, что он показывает и представляет только строки с данными.


person Cannon    schedule 14.09.2017    source источник


Ответы (1)


Если предположить, что у вас есть возможность динамически скрывать строки без данных, то есть довольно простое решение.

Я переработал некоторые примеры данных, которые используются в документах xlsxwriter, а затем искал любые значения Nan. Если они есть, то они скрыты и, следовательно, не отображаются на круговой диаграмме.

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

введите здесь описание изображения

person patrickjlong1    schedule 15.09.2017