如何在python中旋转Seaborn热图?
如何在python中旋转Seaborn热图?,python,seaborn,heatmap,axis-labels,yaxis,Python,Seaborn,Heatmap,Axis Labels,Yaxis,seaborn.热图的默认设置 x轴从原点0开始,然后向原点增加 对 y轴从原点9开始,然后向原点增加 向上 这与matplotlib.pyplot.pcolormesh相比是很奇怪的,它给出了一个y轴,从原点0开始向上移动,就像我们直觉上想要的那样,因为原点只有(0,0)才有意义,而不是(0,9) 如何使热图的y轴也从原点0(而不是9)开始向上移动?(当然,相应地重新定位数据) 我尝试转置输入数据,但这看起来不对,轴也没有改变。我认为不需要绕y轴翻转,只需要简单地旋转热图。您可以通过重置
seaborn.热图的默认设置
- x轴从原点0开始,然后向原点增加
对
- y轴从原点9开始,然后向原点增加
向上
这与matplotlib.pyplot.pcolormesh
相比是很奇怪的,它给出了一个y轴,从原点0开始向上移动,就像我们直觉上想要的那样,因为原点只有(0,0)才有意义,而不是(0,9)
如何使热图的y轴也从原点0(而不是9)开始向上移动?(当然,相应地重新定位数据)
我尝试转置输入数据,但这看起来不对,轴也没有改变。我认为不需要绕y轴翻转,只需要简单地旋转热图。您可以通过重置yticklabels=[]
在左下角点创建图形。这符合您的问题吗
import seaborn as sns
import numpy as np
np.random.seed(0)
sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data, yticklabels=[9,8,7,6,5,4,3,2,1,0])
您可以通过重置yticklabels=[]
在左下角点创建一个图形。这符合您的问题吗
import seaborn as sns
import numpy as np
np.random.seed(0)
sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data, yticklabels=[9,8,7,6,5,4,3,2,1,0])
您可以使用ax.invert_yaxis()翻转y轴。
:
如果要进行所描述的旋转,必须首先转置矩阵:
import seaborn as sns
import numpy as np
np.random.seed(0)
sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data.T)
ax.invert_yaxis()
造成这种差异的原因是他们假设的坐标系不同pcolormesh
假设您希望使用笛卡尔坐标(即[x,y]
)访问元素,并以您期望的方式显示它们<代码>热图
假设您希望使用阵列坐标访问元素,即[行,列]
,因此它提供的热图具有与将阵列打印到控制台相同的布局
为什么他们使用不同的坐标系?我会猜测,但我认为这是由于这两个图书馆的年龄
matplotlib
,尤其是它的旧命令是来自Matlab
的端口,因此许多假设是相同的seaborn
是为Python开发的,开发时间要晚得多,专门针对统计可视化,而在pandas
之后,pandas已经存在。因此,我猜这是为了复制将数据帧打印到屏幕上时数据帧的外观而选择的布局。您可以使用ax.invert_yaxis()翻转y轴。
:
如果要进行所描述的旋转,必须首先转置矩阵:
import seaborn as sns
import numpy as np
np.random.seed(0)
sns.set_theme()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data.T)
ax.invert_yaxis()
造成这种差异的原因是他们假设的坐标系不同pcolormesh
假设您希望使用笛卡尔坐标(即[x,y]
)访问元素,并以您期望的方式显示它们<代码>热图假设您希望使用阵列坐标访问元素,即[行,列]
,因此它提供的热图具有与将阵列打印到控制台相同的布局
为什么他们使用不同的坐标系?我会猜测,但我认为这是由于这两个图书馆的年龄
matplotlib
,尤其是它的旧命令是来自Matlab
的端口,因此许多假设是相同的seaborn
是为Python开发的,开发时间要晚得多,专门针对统计可视化,而在pandas
之后,pandas已经存在。因此,我猜这是为了复制数据框打印到屏幕上时的外观而选择的布局。这只是y轴标记标签的翻转,与实际数据不对应,因为矩阵颜色与之前相同,所以可以看到实际数据。我想在热图中旋转整个数据矩阵,这确实纠正了y轴。我想我误解了问题的意图。这只是y轴刻度标签的翻转,与实际数据不对应,因为矩阵颜色与之前相同,所以可以看到。我想在热图中旋转整个数据矩阵,这确实纠正了y轴。我想我误解了问题的意图。你知道为什么plt.pcolormesh
是默认值,并且seaborn.heatmap()
给出了pcolormesh
默认值的倒转吗?还是反过来说,pcolormesh
方向不对,而heatmap
是对的?这两种方法中哪一种是正确的?答案更新-它们都适用于不同的坐标系!你知道为什么plt.pcolormesh
是默认值,而seaborn.heatmap()
给出了pcolormesh
默认值的倒转吗?还是反过来说,pcolormesh
方向不对,而heatmap
是对的?这两种方法中哪一种是正确的?答案更新-它们都适用于不同的坐标系!