在 python 中创建饼图
Creating pie chart in python
我已经创建了我的饼图,但现在我正在使用这样的一系列单元格:
chart3.add_series({
'name': 'Pie data',
'categories': '=Pivots!$A:$A',
'values': '=Pivots!$F:$F'})
这为我提供了一个饼图,其中包含在 A3-A10 中找到的类别以及对应于单元格 F3-F10 的值。不幸的是,我遇到的问题是我并不总是会在每个单元格中都有数据。所以我可能在一个工作表中有数据,其类别和值的范围可能在 A3-A6 和值 = F3-F6 之间,有时它只有范围在 A3-A9 和值 = F3-F9 之间的数据。我的问题是,当我为不同的工作表显示我的图例时,它们缺少字段,我想知道它们是否是一种获取 A 的长度以获取类别和 F3 的长度以获取值的方法,所以当我的图例是显示它仅显示并代表包含数据的行。
假设您可以选择动态隐藏没有数据的行,那么就有一个相当简单的解决方案。
我修改了 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:$A',
'values': '=Pivots!$F:$F'})
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()
我已经创建了我的饼图,但现在我正在使用这样的一系列单元格:
chart3.add_series({
'name': 'Pie data',
'categories': '=Pivots!$A:$A',
'values': '=Pivots!$F:$F'})
这为我提供了一个饼图,其中包含在 A3-A10 中找到的类别以及对应于单元格 F3-F10 的值。不幸的是,我遇到的问题是我并不总是会在每个单元格中都有数据。所以我可能在一个工作表中有数据,其类别和值的范围可能在 A3-A6 和值 = F3-F6 之间,有时它只有范围在 A3-A9 和值 = F3-F9 之间的数据。我的问题是,当我为不同的工作表显示我的图例时,它们缺少字段,我想知道它们是否是一种获取 A 的长度以获取类别和 F3 的长度以获取值的方法,所以当我的图例是显示它仅显示并代表包含数据的行。
假设您可以选择动态隐藏没有数据的行,那么就有一个相当简单的解决方案。
我修改了 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:$A',
'values': '=Pivots!$F:$F'})
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()