是否有可能像下面这样抑制堆积条形图中的零值。
手动操作至少可以删除 Excel 工作簿中的零值,同时保持顺序(差、中、好)。我尝试用 NaN 替换 numpy 数组中的零,然后使用 add_series 添加它。当我想替换数据时,我收到以下错误:
{TypeError} 如果没有 ‘nan_inf_to_errors’ Workbook() 选项,write_number() 不支持 NAN/INF
我的代码片段如下:
chart_data = ChartData() chart_data.categories = labels chart = graphic_frame.chart for index, row in df.iterrows(): values = row.values values[values == 0] = np.nan chart_data.add_series(index, (values)) chart.replace_data(chart_data)
或者是否有其他方法可以更深入地深入 xml 代码来隐藏特定的零标签?
这对于聚集的条形图很有效。
您需要point在系列中查找值为 的特定点0,并将该点的data_label属性设置has_text_frame为True。
point
0
data_label
has_text_frame
True
True将其设置为而不是似乎违反直觉False。事实是,此属性已设置为False,并且使用数据集中的值呈现数字的是 PowerPoint。通过将其设置为 True 并且不提供任何文本,它将保留为空。
False
接下来,您需要为每个系列设置show_values。True这将告诉 PowerPoint 显示 的数值datapoint。您必须逐个系列地执行此操作。
show_values
datapoint
最后一件事是为标签设置格式。由于在设置时标签已被移除并渲染show_values = True,因此格式会被重置,因此您需要重新设置。
show_values = True
以下是示例代码:
for series in chart.plots[0].series: for i, val in enumerate(series.values): if val == 0: series.points[i].data_label.has_text_frame = True series.data_labels.show_value = True series.data_labels.font.size = YOUR_FONT_SIZE series.data_labels.font.name = YOUR_FONT series.data_labels.font.color.rgb = YOUR_COLOR series.data_labels.number_format = YOUR_NUMBER_FORMAT
这是之前和之后的示例
前
后