首页 > 解决方案 > 固定图形上下轴定位

问题描述

我正在使用 matplotlib 绘制一个相关矩阵,但我在水平刻度的定位上遇到了问题。

目前我正在创建一个图形,放置矩阵图并设置轴。代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rs = np.random.RandomState(0)
names = map(chr, range(65, 75))
df = pd.DataFrame(rs.rand(10, 10), columns=names)

correlations = df.corr()

fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0, 10, 1) #check
ax.set_xticks(ticks) #check
ax.set_yticks(ticks) #check
plt.show()

使用代码,我得到以下图: 阴谋

请注意,第一个和最后一个水平刻度放置不当。就像矩阵的第一行和最后一行被切成两半。另请注意,如果我删除了上述代码中的选中行,则生成的轴是固定的,如下图所示:

阴谋

所以刻度设置有问题。关于如何解决这个问题的任何提示?

@编辑

问题已被标记为重复,但我没有找到专门解决涉及 matplotlib 问题的答案。我最终使用了 seaborn heatmap,所以我可以应用参考帖子中提供的解决方案。您只需要根据您的数据维度设置 ylim 即可。情节代码如下:

fig = plt.figure()
ax = sns.heatmap(correlations, vmin=-1, vmax=1, cmap='viridis')
ax.set_ylim(10, 0)
ax.xaxis.tick_top()  # placing ticks on top
ax.xaxis.set_label_position('top')  # placing labels on top
ax.set_xticklabels(names)  # if you want labels
ax.set_yticklabels(names, rotation='horizontal')
plt.show()

标签: pythonmatplotlibplot

解决方案


推荐阅读