【发布时间】:2018-07-17 15:54:53
【问题描述】:
我正在尝试绘制两个自变量 x 和 y 与因变量 score 作为热图的关系:x 和 y 是从 0 到无穷大和 @987654333 的整数值@ 是介于 0 和 1 之间的实数值。
想要的外观
x 和 y 有大量可见值,所以我想让它看起来更像一个典型的密度图,如下例所示,因为每个个体 (x, y) 的确切值是不是很重要:
(取自Seaborn's documentation的示例)
目前的做法
目前,我正在尝试使用 Seaborn 的 heatmap(..) 函数来绘制数据,但结果图几乎不可读,每个离散数据点之间有大量空间,而不是“连续”梯度。使用的绘图逻辑如下:
import pandas as pd
from matplotlib.pyplot import cm
import seaborn as sns
sns.set_style("whitegrid")
df = read_df_using_pandas(...)
table = df.pivot_table(
values="score",
index="y",
columns="x", aggfunc='mean')
ax = sns.heatmap(table, cmap=cm.magma_r)
ax.invert_yaxis()
fig = sns_plot.get_figure()
fig.savefig("some_outfile.png", format="png")
结果图如下所示,这是错误的,因为它与上一节中描述的所需外观不匹配:
我不知道为什么每个离散数据点之间存在大量空间而不是“连续”梯度。如何绘制由两个离散值组成的数据之间的关系( x 和 y) 以模拟梯度密度图的方式表示为第三个标量值 (score)?该解决方案不需要使用 Seaborn 甚至 matplotlib。
【问题讨论】:
-
请让您的案例可重现,请参阅minimal reproducible example。
-
这是最小的:代码唯一要做的就是制作情节。
标签: python matplotlib plot heatmap seaborn