Pandas -使用标记索引向箱形图添加单个标记

ac1kyiln  于 2023-02-27  发布在  其他
关注(0)|答案(2)|浏览(130)

我有一个 Dataframe 分组的“年”,“农场”和“作物”,我用它来绘制一个箱形图显示“产量吨/公顷”的“作物”,其中每个数据点将是一个单独的“农场平均值”。

我想添加标记,以便突出显示特定农场数据在此图中的位置。最终,我计划通过按特定“农场”过滤数据集并将其添加到图中来实现此目的。但目前,我似乎无法手动完成此操作。我尝试了各种方法,包括:

plt.plot('Linseed', 7, marker='^', markersize=10, markerfacecolor='green')

它就是这样:

如果我传递位置索引值(例如1),它就可以工作,但这对我没有帮助,因为这需要是动态的,因为索引值将根据“农场”种植和不种植的作物而变化。
dataframe.index是一个多索引,所以我尝试为.plot()中的x参数传递一个元组:

plt.plot((2022, 'Farm A', 'Linseed'), 7, marker='^', markersize=10, markerfacecolor='green')

但我得到了一个错误

ValueError: x and y must have same first dimension, but have shapes (3,) and (1,)

如何将单个值添加到特定的x轴索引?

rsl1atfo

rsl1atfo1#

你的第一个建议就快成功了

plt.plot('Linseed', 7, marker='^', markersize=10, markerfacecolor='green')

您需要传递与'Linseed'列对应的x坐标,而不是传递名称'Linseed'。我没有看到创建箱线图的代码,但可能坐标是1。
下面是一个重复的例子:

import numpy as np
import matplotlib.pyplot as plt

dict_data = {x: np.random.randn(10) for x in range(3)}

plt.boxplot(dict_data.values());
plt.plot('test', 3, '^', c='blue')
plt.plot(1, 4, '^', c='green')

最好的方法是在绘制箱线图时指定箱线图的x坐标,然后在绘制单个三角形时重用它。希望这对你有帮助!

wtzytmuj

wtzytmuj2#

可以按如下方式使用get_xticklabels();

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt

dict_data = {f'data_{x}': np.random.randn(10) for x in range(3)}
df_data = pd.DataFrame(dict_data)

ax = plt.subplot(111)
df_data.boxplot()
xticklabels = ax.get_xticklabels()
xcoord_label = np.where([x._text == 'data_2' for x in xticklabels])[0]
ax.plot(xcoord_label + 1, 4, '^', c='green')

相关问题