【发布时间】:2020-02-10 16:24:46
【问题描述】:
我有以下df:
df = pd.DataFrame([
['A', 'X', '2020-10-01', 1],
['A', 'X', '2020-10-02', 2],
['A', 'X', '2020-10-03', 3],
['A', 'Y', '2020-10-01', 4],
['A', 'Y', '2020-10-02', 5],
['A', 'Y', '2020-10-03', 6],
['B', 'Z', '2020-10-01', 7],
['B', 'Z', '2020-10-02', 8],
['B', 'Z', '2020-10-03', 9],
['B', 'Z', '2020-10-01', 10],
['B', 'Z', '2020-10-02', 11],
['B', 'Z', '2020-10-03', 12],
],
columns=['Q', 'W', 'DT', 'V']
)
我想创建一个散点图:
fig, ax = plt.subplots(figsize=(12, 8), frameon=False)
fig.suptitle('Plotz', fontsize=16)
ax.set_title('DF Plot')
ax.scatter(x=df.DT, y=df.W, s=df.V)
这创建了以下图表:
我想弄清楚实际发生了什么,因为图表上有 9 个数据点,而数据中有 12 个数据点。注释图表不起作用,它将为顶行注释 2 个值。
for i, txt in enumerate(df.V):
ax.annotate(txt, (df.DT[i], df.W[i]), fontsize=14)
当 x,y 对有多个值时(如本例中),有没有办法弄清楚引擎盖下到底发生了什么?
更新:也许我不清楚。在这种情况下 Matplotlib 的默认行为是什么?是最后的价值获胜吗?我怎样才能在图上显示实际值? (与显示两个值的注释代码不同,这显示了绘图上的实际值)。
在谷歌搜索后,我认为答案是:
Visualization of scatter plots with overlapping points in matplotlib
【问题讨论】:
-
Z点重叠。 -
那是因为你的 Z 值是重复的。所以在 6 个 Z 值中,你只能得到 3 个
-
是的,会发生什么?更大的价值获胜,最后的价值获胜?均值是计算出来的?存在重叠值时的默认行为是什么?我可以控制行为吗?
标签: python matplotlib