在 Seaborn 热力图中调整刻度设置

8
我一直在尝试通过多种不同的方法调整热力图的刻度设置,但都没有成功。唯一一个能够实际改变图形设置的方法是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))的结果: enter image description here 第二张图片是使用plt.xticks(np.arange(217, 8850, 85))的结果: enter image description here 第三张是原始热力图: enter image description here
 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()

请问您能否添加一张您所得到的结果的图片? - Vinícius Figueiredo
1
刚刚上传了它们!@ViníciusAguiar - Jacob Snow
2个回答

16
cPreference = sns.heatmap(vm, vmax = 100, cmap = color,
    xticklabels = 10, yticklabels = 5,
    cbar_kws={'label': 'Success Rate of Climbs (%)'})

通过将xticklabelsyticklabels设置为一个整数,它仍然会绘制相同的列,但只会显示该列中每个第n个项目。

0

您可以通过设置自定义刻度定位器来手动指定刻度位置的行为,例如

from matplotlib import ticker
tick_locator = ticker.MaxNLocator(10)
ax.xaxis.set_major_locator(tick_locator)

这里是链接,其中包含了许多选项的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接