【问题标题】:Label groups in a heat map在热图中标记组
【发布时间】:2015-03-24 01:01:32
【问题描述】:

我有一个数组,其中第 ij 项是 ij 区域共有的基因数量,这些基因在 ij 中差异表达em>i 相对于 j.

标记每个 xtick 和 ytick 会使图表过于拥挤。如同 this questionthis question 我想在我的 x 轴上对标签进行分组。

Hawrylycz 等人 (2012) 的下图中热图的 xticklabels 是我想要的一个很好的例子 xticklabels 指的是更一般的区域。例如,额叶下的所有列都对应于额叶内的大脑结构。

我不想复制 yticklabels 或条形图插图。

我的方法

对于热图中的每个框,我都有一个本体。我选择在几个区域绘制结构,例如仅“额叶和顶叶”。

使用本体,我可以发现每个结构的列组的开始和结束索引。 如何使用这些索引来绘制组标签?

【问题讨论】:

  • matplotlib.org/api/ticker_api.html#tick-locating 有关于全面控制的详细信息。但是,ax.xticks', ax.set_xticklabels` 可能就足够了。
  • this 可能有用
  • 是的!在尝试回答我的问题时,我还发现了 seaborn。
  • 我也在想,如果没有像上面那样做标准绘图的课程,那么制作一个课程将是一个很好的有用练习。

标签: python matplotlib visualization


【解决方案1】:

像这样:

import pandas as pd
from numpy.random import random_integers
from numpy import reshape
import matplotlib.pyplot as plt
from matplotlib.ticker import FixedLocator, FixedFormatter
alph = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lalph = list(alph.lower())
alph = list(alph)

df = pd.DataFrame(random_integers(0,100,(26,26)),columns=alph,
                  index=lalph)

# Two lines just to make a plaid image in imshow 
differ = reshape([sum(df[col2]-df[col]) for col2 in df for col in df], (26,26))
differ = pd.DataFrame(differ, columns=alph,index=alph)

# pick the labels you want
ticks = [2, 14, 18, 19, 22] # C=2 because A=0 because Python is 0-indexed
ticklabels = [alph[x] for x in ticks]

fig = plt.figure(figsize=(3,5))
ax = fig.add_subplot(111)
ax.imshow(differ)
ax.autoscale(False)

# display only the chosen ticks and ticklabels
ax.xaxis.set_major_locator(FixedLocator(ticks))
ax.xaxis.set_major_formatter(FixedFormatter(ticklabels))

您将拥有一个命名基因的字符串列表,而不是用作字母列表的字符串,但 imshow 轴索引仍然是底层 numpy 数组的索引。

【讨论】:

  • 你如何画一个发夹或条来表示'C'、'O'等的跨度?
  • 条形图是与主子图共享 X 轴的第二个子图上的条形图;勾勒出它们的垂直线一直到主要的边缘。组合子图可能是最简单的方法。主子图中的那些白色轮廓,带有白色边缘颜色和没有面颜色的矩形。这是标准数据的标准图吗?
  • 这是基因表达数据的标准绘图类型。 R 绘制这些图。我更喜欢 Python,因为我分析多种类型的数据,而且我发现 Python 代码更易于阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
相关资源
最近更新 更多