- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个包含大约 200 个观测值的数据集,我想将其绘制为热图。每个观察都有一个与之关联的字符串,我想显示它。我的问题是我无法阅读这些标签,因为它们相互重叠。因此,我的问题是,是否可以以某种方式将热图的单元格大小设置为 yticklabel
的字体大小,或者是否有任何其他解决方法。
在下面的示例中,我使用随机数据进行说明:
import seaborn as sns
import numpy as np
data = np.random.rand(200, 10)
ax = sns.heatmap(data)
for item in ax.get_yticklabels():
item.set_rotation(0)
这给了我:
有没有办法让这些 yticklabels
可读?在理想情况下,我会有一个选项允许我将单元格的高度设置为 yticklabels
的字体大小。这可能吗?
编辑:
如评论中所述,一种可能性是增加图形的大小。我试过如下:
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(200, 10)
fig, ax = plt.subplots()
fig.set_size_inches(38.5, 10.5)
ax2 = sns.heatmap(data, ax=ax)
for item in ax2.get_yticklabels():
item.set_rotation(0)
这给了我相同的输出。我是否正确使用它?
最佳答案
为标签腾出更多空间的唯一方法是增加矩阵的高度。唯一的其他选择是减小字体大小,但我想这不是您想要的。因此,您可以根据矩阵中的行数和标签的字体大小来计算理想的图形高度。当您保存生成的图时,您会得到预期的结果。您在调用 plt.show()
时看到的 GUI 窗口的高度似乎限于屏幕高度:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# create some random data
data = np.random.rand(150, 10)
# get the tick label font size
fontsize_pt = plt.rcParams['ytick.labelsize']
dpi = 72.27
# comput the matrix height in points and inches
matrix_height_pt = fontsize_pt * data.shape[0]
matrix_height_in = matrix_height_pt / dpi
# compute the required figure height
top_margin = 0.04 # in percentage of the figure height
bottom_margin = 0.04 # in percentage of the figure height
figure_height = matrix_height_in / (1 - top_margin - bottom_margin)
# build the figure instance with the desired height
fig, ax = plt.subplots(
figsize=(6,figure_height),
gridspec_kw=dict(top=1-top_margin, bottom=bottom_margin))
# let seaborn do it's thing
ax = sns.heatmap(data, ax=ax)
# save the figure
plt.savefig('/tmp/test.png')
结果:
关于python - 重叠的 yticklabels : Is it possible to control cell size of heatmap in seaborn?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35127920/
我正在使用 Java 类 HeatMap(作者: http://www.mbeckler.org/heatMap/ )为我的矩阵生成热图。我想实现一个鼠标监听器,当鼠标位于图像(热图)上的某个位置时,
我正在绘制热图,我不希望行名和列名在 x 轴和 y 轴上可见。 所以我使用了下面的代码: heatmap.2(data, xlab="PROTEINS", ylab="DRUGS", labRow=F
很抱歉,如果这个问题已在其他地方得到解答,但我无法找到解决方案...... 我有scatterplot数据、x和y以及颜色数据c(所有这些都是向量)。 x = rand(100,1); y = ran
我想从我的数据表中过滤掉 FTE 值为 0 的行,但前提是从我的热图中选择了一个框。如果未选择任何框,则数据表应显示 FTE 值为 0 的行。 我找到了这个:https://groups.google
我有一个制表符分隔的数据文本文件 (Data.txt),其中包含 13 列和 90 行。它有一个标题行(样本值),第一列是样本名称。 当我将数据加载到数据矩阵时,我的第一列样本名称没有显示。它们都被
我正在尝试在 Holoviews 中为每个点生成一个具有自定义颜色值的热图,以便指定不同的 alpha 颜色值。 目前我正在生成两个具有不同 alpha 值的 Holoviews 图并像这样叠加它们:
这个问题在这里已经有了答案: How to create pre-annotated rowside column in heatmap.2 (2 个回答) 4年前关闭。 我有以下 MWE,我在其中制
我正在尝试使用 heatmap.2 在一定范围内绘制值矩阵。列是范围(例如,0 到 100)。列标签太多,无法清晰显示。有没有办法显示每第 N 个(0、10、20 等)?我希望显示所有值,但我不希望它
我正在绘制一个 759*12 双矩阵 twoway.expr.005使用 heatmap.2() library(gplots) dist2 <- function(x, ...){as.dist(1
我有关于包裹的问题 gplots .我想使用功能heatmap.2因此我想将颜色键中的对称点从 0 更改为 1。通常在 symkey=TRUE 时然后您使用 col=redgreen() ,创建一个颜
我正在尝试将 heatmap.js 与 Google map 集成以进行一些可视化工作。我提到了这个: http://www.patrick-wied.at/static/heatmapjs/exam
我生成了这样的热图: X 轴和 Y 轴标签未完全显示。我的代码在这里: heatmap.2(x,col=blueyelred,colsep=c(1:6),rowsep=(1:62),
我有以下代码来显示热图上方的颜色键。但是颜色键在热图的顶部(稍微向右移动)并不精确。有谁知道如何使颜色不改变?另外,如何删除热图右侧的空白?谢谢。 library(gplots) heatmap.2(
有谁知道为什么我的 heatmap.2 结果有奇怪的颜色——绿松石不属于我的红/黑/绿调色板?绿松石似乎是指基于样本聚类的信息(我“错误”编辑出的行树状图),而不是基于特征聚类的信息。这是怎么回事?
我正在尝试使用 heatmap.2(下面的代码)生成一些对数转换的倍数变化数据图。 我想按照最后一列中的值(从大到小)对热图中的行进行排序。这些行正在自动排序(我不确定“幕后”使用的精确计算),如图所
我正在使用 github 中 pa7 的 heatmap.js 库成功制作一些热图 http://www.patrick-wied.at/static/heatmapjs/example-heatma
所以我需要在 seaborn 中创建大量具有不同数据尺度的热图。一些范围从 0-100 和一些 +100 到 -100。我需要做的是在所有图表中保持相同的颜色分级。因此,例如,我希望任何低于 0 的东
我正在为我的应用程序尝试热图,但我认为我的代码中缺少一些东西,因为它不起作用。 JSFiddle 下面是我的代码: var domElement = document.getE
首先,我正在使用 ReactJS 和 heatmap.js 库。 用作 heatmap.js 入口点的 HTMLDivElement 应该是响应式的。在每次调整窗口大小时,它都会根据当前窗口大小进行调
我有一个简单的传单热图示例,其中包含数据(超过 10,000 行)。但它没有产生应有的梯度热图。 演示在 http://shafiqmustapa.my/test.html heatmap没有根据va
我是一名优秀的程序员,十分优秀!