Issue
I've been trying to adjust the tick settings for a heat map through several different methods with no success. The only method that actually changes the settings of the plot is plt.xticks(np.arange(217, 8850, 85))
but even when using several different intervals for this method the data is skewed greatly to the right.
When the tick labels aren't clumped together (for example using plt.xticks(np.arange(217, 8850, 500))
) the last tick mark on the end of the axis is no where near the 8850 max I need to show all the data.
I'm trying to adjust these tick settings on both the x and y in order to view the full range of data (Xmax: 8848 Xmin: 7200, Ymax: 8848 Ymin:217) with intervals that allow the tick labels to be readable.
Images of Heatmap:
First image is with plt.xticks(np.arange(217, 8850, 500))
:
Second image is with plt.xticks(np.arange(217, 8850, 85))
:
Third is original Heatmap:
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()
Solution
cPreference = sns.heatmap(vm, vmax = 100, cmap = color,
xticklabels = 10, yticklabels = 5,
cbar_kws={'label': 'Success Rate of Climbs (%)'})
By setting xticklabels
or yticklabels
equal to an integer, it will still plot the same column, but it will only display every nth item in that column.
Answered By - Jacob Snow
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.