python - 固定图形上下轴定位
问题描述
我正在使用 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()
解决方案
推荐阅读
- python - 如何将 MXDataIter 转换为 DataSet?
- c++ - 将几个 std::collections 输出到 CSV / 行第一次迭代的函数
- python - 如何使用python求解以下方程
- javascript - 在另一个双向数组 Y 中搜索双向数组 X 元素 - Javascript
- reactjs - react-router-dom v 6.0.0 中重定向的替代方法是什么?
- sql-server - 如何去除汉字字符串末尾的空格char(32)?
- php - 在 wordpres 的父帖子页面上显示子帖子
- excel - 删除字符串的一部分(';' 分号分隔符)并在一个单元格中列出字符串的其余部分
- eslintrc - 即使在编辑 eslintrc 文件后,no-param-reassign 问题仍然存在
- typescript - 从导入的类型创建 typedef