python - 如何在python中为plt.pcolor()设置右轴范围
问题描述
当我想绘制旋转数据框的热图时
import pandas as pd
import seaborn as sns
%matplotlib inline
sample = pd.DataFrame.from_dict({'x': np.tile(np.arange(2,5),(1,5))[0],
'y': np.tile(np.arange(0,5),(1,3))[0],
'value': np.random.rand(15)
})
sample_pvt = sample.pivot_table(index='x',columns='y')
plt.pcolor(sample_pvt)
即使 x 的范围是 2 到 5,该图也只显示 0 到 3 的范围。我知道使用 seaborn 可以解决这个问题,但是有没有办法在 pcolor 中指定轴范围?谢谢
解决方案
Seaborn 将简单地注释 pcolor(mesh) 图的行和列。为了在这里达到同样的效果,
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
sample = pd.DataFrame.from_dict({'x': np.tile(np.arange(2,5),(1,5))[0],
'y': np.tile(np.arange(0,5),(1,3))[0],
'value': np.random.rand(15)
})
sample_pvt = sample.pivot_table(index='x',columns='y')
sample_pvt.columns = sample_pvt.columns.droplevel(0)
plt.pcolor(sample_pvt)
plt.xticks(np.arange(len(sample_pvt.columns))+0.5, sample_pvt.columns)
plt.yticks(np.arange(len(sample_pvt.index))+0.5, sample_pvt.index)
plt.show()
要改为以数字正确的方式放置像素,您需要首先确定 x 和 y 值实际上是像素的中心还是边缘。对于中心,
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np; np.random.seed(42)
sample = pd.DataFrame.from_dict({'x': np.tile(np.arange(2,5),(1,5))[0],
'y': np.tile(np.arange(0,5),(1,3))[0],
'value': np.random.rand(15)
})
sample_pvt = sample.pivot_table(index='x',columns='y')
sample_pvt.columns = sample_pvt.columns.droplevel(0)
x = np.linspace(sample_pvt.columns[0]-0.5, sample_pvt.columns[-1]+0.5, len(sample_pvt.columns)+1)
y = np.linspace(sample_pvt.index[0]-0.5, sample_pvt.index[-1]+0.5, len(sample_pvt.index)+1)
plt.pcolor(x, y, sample_pvt)
plt.show()
对于边缘,
x = np.linspace(sample_pvt.columns[0], sample_pvt.columns[-1]+1, len(sample_pvt.columns)+1)
y = np.linspace(sample_pvt.index[0], sample_pvt.index[-1]+1, len(sample_pvt.index)+1)
plt.pcolor(x, y, sample_pvt)
推荐阅读
- amazon-web-services - AWS Amplify + bitbucket 部署问题
- python - 有没有更好的方法来获取未知长度列表中的第 n 个元素?
- python - 我在 python 中的代码有什么问题?
- reactjs - 刷新页面我得到 TypeError: Cannot read property 'Location' of undefined
- reactjs - 避免更新未安装的组件
- android - 将数据从回收站视图转换为字符串 onClick
- mysql - MySQL 根据不同的表插入记录
- mysql - SQL:where条件与所有
- c++ - 如何在 C++ 中的类中创建对象?
- react-native - 从嵌套堆栈到达根堆栈