R:如何显示聚类矩阵热图(相似颜色图案分组)
我在整个网站和软件包中搜索了很多有关热图的问题,但仍然有问题。
我有集群数据(kmeans/EM/DBscan..),并且我想通过对同一集群进行分组来创建热图。我希望将相似的颜色图案分组在热图中,所以一般来说,它看起来像块对角线。
我尝试按簇号对数据进行排序并显示它,
k = kmeans(data, 3)
d = data.frame(data)
d = data.frame(d, k$cluster)
d = d[order(d$k.cluster),]
heatmap(as.matrix(d))
but it is still not sorted and looks like this link:But, I want it to be sorted by its cluster number and looked like this:
Can I do this in R?
I searched lots of packages and tried many ways, but I still have a problem.
Thanks a lot.
I searched a lot of questions about heatmap throughout the site and packages, but I still have a problem.
I have clustered data (kmeans/EM/DBscan..), and I want to create a heatmap by grouping the same cluster. I want the similar color patterns to be grouped in the heatmap, so generally, it looks like a block-diagonal.
I tried to order the data by the cluster number and display it,
k = kmeans(data, 3)
d = data.frame(data)
d = data.frame(d, k$cluster)
d = d[order(d$k.cluster),]
heatmap(as.matrix(d))
but it is still not sorted and looks like this link:
But, I want it to be sorted by its cluster number and looked like this:
Can I do this in R?
I searched lots of packages and tried many ways, but I still have a problem.
Thanks a lot.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
reshape2
和ggplot2
执行此操作,如下所示:You can do this using
reshape2
andggplot2
as follows:如果您不需要树状图和后续排序,则应将
Rowv
和Colv
设置为NA
。顺便说一句,您还应该进行缩放。使用 Andrie 的 df :事实上,整个热图基于
image()< /代码>。您可以使用
image
来构建完全符合您想要的绘图。 Heatmap在内部使用layout(),因此很难设置边距。对于图像,您可以执行以下操作:生成侧面边距较少的绘图。您还可以操作轴、颜色……您绝对应该看看 RColorBrewer 包
(这个自定义函数基于热图使用的内部绘图顺便说一句,为了说明而进行了简化并获得摆脱所有树状图的东西)
You should set
Rowv
andColv
toNA
if you don't want the dendrograms and the subseuent ordering. BTW, You should also put of the scaling. Using the df of Andrie :In fact, this whole heatmap is based on
image()
. You can hack away usingimage
to construct a plot exactly like you want. Heatmap is using layout() internally, so it will be diffucult to set the margins. With image you could do eg :To produce a plot that has less margins on the side. You can also manipulate axes, colors, ... You should definitely take a look at the
RColorBrewer
package(This custom function is based on the internal plotting used by heatmap btw, simplified for the illustration and to get rid of all the dendrogram stuff)