调整 Seaborn 热图上的刻度设置
Adjusting tick settings on Seaborn heatmap
我一直在尝试通过几种不同的方法调整热图的刻度设置,但没有成功。实际更改绘图设置的唯一方法是 plt.xticks(np.arange(217, 8850, 85))
,但即使为此方法使用多个不同的时间间隔,数据也会大大向右倾斜。
当刻度标签没有聚集在一起时(例如使用 plt.xticks(np.arange(217, 8850, 500))
),轴末端的最后一个刻度标记不在 8850 最大值附近,我需要显示所有数据。
我正在尝试调整 x 和 y 上的这些刻度设置,以便查看完整范围的数据(Xmax:8848 Xmin:7200,Ymax:8848 Ymin:217),间隔允许刻度标签可读。
热图图像:
第一张图片 plt.xticks(np.arange(217, 8850, 500))
:
第二张图片 plt.xticks(np.arange(217, 8850, 85))
:
第三张是原始热图:
color = 'seismic'
success_rate = (m['Ascents'] / ((m['Ascents']) + (m['Failed_Attempts'])))*100
success_rate.fillna(0).astype(float)
mm['success_rate'] = success_rate
mm['success_rate'].round(2)
vm = mm.pivot("Height(m)", "Prominence(m)", "success_rate")
cPreference = sns.heatmap(vm, vmax = 100, cmap = color, cbar_kws= {'label': 'Success Rate of Climbs (%)'})
cPreference = cPreference.invert_yaxis()
"""Methods I've Tried"""
plt.xticks(np.arange(217, 8850, 1000)) """<< Only line that actually makes visible changes but data is skewed greatly"""
cPreference.xaxis.set_ticks(np.arange(mm["Height(m)"].min(), mm["Height(m)"].max(), (mm["Height(m)"].max() - \
mm["Height(m)"].min()) / 10))
cPreference.yaxis.set_ticks(np.arange(mm["Prominence(m)"].min(), mm["Prominence(m)"].max(), (mm["Prominence(m)"].max() \
- mm["Prominence(m)"].min()) / 10))
sns.set_style("ticks", {"xtick.major.size" : 8, "ytick.major.size" : 8})
plt.title("What is a good Mountain to Climb?")
sns.plt.show()
您可以通过设置自定义刻度定位器来手动指定刻度定位的行为,例如
from matplotlib import ticker
tick_locator = ticker.MaxNLocator(10)
ax.xaxis.set_major_locator(tick_locator)
这里是link许多选项的文档
cPreference = sns.heatmap(vm, vmax = 100, cmap = color, >>> xticklabels = 10, yticklabels = 5 <<<, cbar_kws={'label': 'Success Rate of Climbs (%)'})
通过将 xticklabels 或 yticklabels 设置为整数,它仍将绘制同一列,但只会显示该列中的每第 n 个项目。
我一直在尝试通过几种不同的方法调整热图的刻度设置,但没有成功。实际更改绘图设置的唯一方法是 plt.xticks(np.arange(217, 8850, 85))
,但即使为此方法使用多个不同的时间间隔,数据也会大大向右倾斜。
当刻度标签没有聚集在一起时(例如使用 plt.xticks(np.arange(217, 8850, 500))
),轴末端的最后一个刻度标记不在 8850 最大值附近,我需要显示所有数据。
我正在尝试调整 x 和 y 上的这些刻度设置,以便查看完整范围的数据(Xmax:8848 Xmin:7200,Ymax:8848 Ymin:217),间隔允许刻度标签可读。
热图图像:
第一张图片 plt.xticks(np.arange(217, 8850, 500))
:
第二张图片 plt.xticks(np.arange(217, 8850, 85))
:
第三张是原始热图:
color = 'seismic'
success_rate = (m['Ascents'] / ((m['Ascents']) + (m['Failed_Attempts'])))*100
success_rate.fillna(0).astype(float)
mm['success_rate'] = success_rate
mm['success_rate'].round(2)
vm = mm.pivot("Height(m)", "Prominence(m)", "success_rate")
cPreference = sns.heatmap(vm, vmax = 100, cmap = color, cbar_kws= {'label': 'Success Rate of Climbs (%)'})
cPreference = cPreference.invert_yaxis()
"""Methods I've Tried"""
plt.xticks(np.arange(217, 8850, 1000)) """<< Only line that actually makes visible changes but data is skewed greatly"""
cPreference.xaxis.set_ticks(np.arange(mm["Height(m)"].min(), mm["Height(m)"].max(), (mm["Height(m)"].max() - \
mm["Height(m)"].min()) / 10))
cPreference.yaxis.set_ticks(np.arange(mm["Prominence(m)"].min(), mm["Prominence(m)"].max(), (mm["Prominence(m)"].max() \
- mm["Prominence(m)"].min()) / 10))
sns.set_style("ticks", {"xtick.major.size" : 8, "ytick.major.size" : 8})
plt.title("What is a good Mountain to Climb?")
sns.plt.show()
您可以通过设置自定义刻度定位器来手动指定刻度定位的行为,例如
from matplotlib import ticker
tick_locator = ticker.MaxNLocator(10)
ax.xaxis.set_major_locator(tick_locator)
这里是link许多选项的文档
cPreference = sns.heatmap(vm, vmax = 100, cmap = color, >>> xticklabels = 10, yticklabels = 5 <<<, cbar_kws={'label': 'Success Rate of Climbs (%)'})
通过将 xticklabels 或 yticklabels 设置为整数,它仍将绘制同一列,但只会显示该列中的每第 n 个项目。