我正在尝试使用windows自动化图表报告分析。
我一直在尝试不同的方法来添加标签使用VBA记录器,但还没有得到任何工作。如何将标签添加到SeriesCollection或FullSeriesCollection?假设我有一个使用Xlwings创建的功能表
#Create Chart
chart = sheet.charts.add()
chart.chart_type = 'xy_scatter_lines'
chart.api[1].SeriesCollection().NewSeries()
# Assume I have some data
x = data_p_sheet.range(f'{col_x}5').expand("down")
y = data_p_sheet.range(f'{col_y}5').expand("down")
chart.api[1].SeriesCollection(1).XValues = x.api
chart.api[1].SeriesCollection(1).Values = y.api
chart.api[1].FullSeriesCollection(1).Name = "MyChart"
假设我的标签在一个行数与x和y相同的范围内
labels =data_p_sheet.range(f'{col_labels}5').expand("down")
chart.api[1].FullSeriesCollection(1).DataLabels = labels
它不工作,也不返回任何错误,所以我不确定这是否是正确的方法。
chart.api[1].FullSeriesCollection(i).ApplyDataLabels()
上面的代码片段添加了数据标签,但我仍然没有得到我想要的布局。
Schema of how my sheet and data looks like
我试图让id列成为每个点的标签。
我得到了一个毫不在意的解决方案,假设你在其他地方获得了SeriesCollection索引:
for i, label in enumerate(labels):
i_label=chart.api[1].SeriesCollection(j).DataLabels(i+1)
i_label.Text = str(label)
1条答案
按热度按时间6rqinv9w1#
我无法从“单元格中的值”或通过更改标签的值来获取设置标签的代码。然而,并非所有的图表功能都可以使用Xlwings。
也许xlsxwriter适合您使用。这样做的选择是在去年左右增加的。
此示例将生成如下
的散点图
xlsxwriter