我正在尝试在Python中创建一个带有渐变填充的密度图,如下所示:
我尝试使用此代码来执行此操作:
plt.figure(figsize=(6, 1))
sns.kdeplot(data=df, x='Overall Rating', fill=True, palette='viridis')
...and
sns.kdeplot(data=df, x='Overall Rating', fill=True, cmap='viridis')
都不起作用,都输出这个图:
我已经在Python中到处寻找一种方法来做到这一点,但没有运气。我已经尝试实现@Diziet Asahi 这个答案中的方法,但无法理解它。任何帮助将不胜感激!
ax = sns.kdeplot(...)
,然后用
for
执行@Diziet Asahi解决方案中的
ax
循环的内部部分。
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
sns.set_theme(style='white')
tips = sns.load_dataset('tips')
ax = sns.kdeplot(data=tips, x='tip', fill=True)
sns.despine()
cmap = 'turbo'
im = ax.imshow(np.linspace(0, 1, 256).reshape(1, -1), cmap=cmap, aspect='auto',
extent=[*ax.get_xlim(), *ax.get_ylim()], zorder=10)
path = ax.collections[0].get_paths()[0]
patch = matplotlib.patches.PathPatch(path, transform=ax.transData)
im.set_clip_path(patch)
plt.show()