仅显示图表中的最后一个点数据标签并隐藏所有其他数据标签

问题描述 投票:0回答:1

我有一个问题,我长期以来一直在尝试解决。我有一个必须每月更新的演示文稿。本演示文稿中有一些带有线图的幻灯片,如下所示:

理想线图

在这张幻灯片中,我必须每月更新图表数据,然后将最后一个点的值写入图的最右侧,如图所示。例如,下个月的值应该与当前月份的值不同。我使用的图表是 Powerpoint 图表,因此我可以在其上应用一些样式,并且仅使用 python 更改数据。

我已经能做的:

• 使用 CategoryChartData 更新数据,而不更改绘图样式;

• 保留或更改线条的颜色和宽度;

• 像我已经说过的那样,在右侧写下数据标签。

最后一点的问题是:要添加最后一点的数据标签并隐藏所有其他点,我需要从没有任何数据标签的绘图开始。换句话说,我只能添加一个数据标签,但无法删除任何数据标签。问题是,当我更新下个月时,本月的数据标签值将保留在图中。这是另一个例子: 中间有不需要的数据标签的线图 在这里,中间的数据标签是一月最后一天的最后一个数据点。当我用五月的值更新绘图时,我应该删除这些数据标签并仅保留五月最后一个数据点的数据标签。 是的,我可以使用没有任何数据标签的模板,只添加我想要生成最终副本的模板,但问题是在这个项目中,这是非常不切实际的,因为它是一个大项目,并且演示文稿必须在上一个项目上进行更新。 我已经尝试过很多事情,例如:

points[i].data_label.has_text_frame = False

points[i].data_label.show_value = False

chart_.plots[0].data_labels.show_percentage = False

series_.data_labels.show_value = False

但没有一个奏效。我也尝试过这个想法:python-pptx – How to individual hide/show data labels in graph但它不起作用,因为重新定义文本会让我失去布局的原始风格,对我来说更难通过代码设置样式。

需要明确的是,我已经在 matplotlib 中做到了这一点,但维护代码非常困难,因为这里我们重复使用具有不同样式的相同绘图,因此使用 python-pptx 的解决方案是最好的解决方案。

我想要的是隐藏除最后一个之外的所有数据标签。这对于图表上已经存在的数据标签有效,例如上面的第二张打印。

有什么办法可以解决这个问题吗?就像隐藏所有数据标签然后仅激活最后一个?

python python-3.x powerpoint python-pptx
1个回答
0
投票

您尝试过使用

plt.text
吗?类似的东西

import matplotlib.pyplot as plt
import pandas as pd

# Example time-series data
data = {'Date': pd.date_range(start='1/1/2020', periods=10, freq='M'),
        'Value': [10, 15, 13, 17, 19, 21, 25, 22, 26, 28]}

df = pd.DataFrame(data)

# Plot the time-series data
plt.figure(figsize=(10, 6))
plt.plot(df['Date'], df['Value'], marker='o')

# Annotate the last data point
last_date = df['Date'].iloc[-1]
last_value = df['Value'].iloc[-1]
plt.text(last_date, last_value, f'{last_value}', fontsize=12, ha='left')

# Display the plot
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.