绘制一个框大小改变的表格

时间:2017-02-17 21:45:52

标签: r plot matlab-figure

有谁知道这种图表是如何绘制的?好像是热图。然而,不是使用颜色,而是使用每个单元的大小来指示幅度。我想绘制一个这样的人物,但我不知道如何实现它。这可以在R或Matlab中完成吗? enter image description here

3 个答案:

答案 0 :(得分:3)

尝试分散:

scatter(x,y,sz,c,'s','filled');

其中x和y是每个正方形的位置,sz是大小(必须是与x和y长度相同的向量),c是3xlength(x)矩阵,每个条目的颜色值。可以使用set(gcf, properties )或xticklabels输入绘图的标签:

X=30;
Y=10;
[x,y]=meshgrid(1:X,1:Y);
x=reshape(x,[size(x,1)*size(x,2) 1]);
y=reshape(y,[size(y,1)*size(y,2) 1]);

sz=50;
sz=sz*(1+rand(size(x)));
c=[1*ones(length(x),1) repmat(rand(size(x)),[1 2])];
scatter(x,y,sz,c,'s','filled');

xlab={'ACC';'BLCA';etc}
xticks(1:X)
xticklabels(xlab)
set(get(gca,'XLabel'),'Rotation',90);
ylab={'RAPGEB6';etc}
yticks(1:Y)
yticklabels(ylab)
编辑:yticks& co仅适用于> R2016b,如果您没有更新的版本,则应使用set:

set(gca,'XTick',1:X,'XTickLabel',xlab,'XTickLabelRotation',90) %rotation only available for >R2014b
set(gca,'YTick',1:Y,'YTickLabel',ylab)

enter image description here

答案 1 :(得分:2)

R中,可以使用corrplot个包。具体而言,您必须在创建绘图时使用method = 'square'

以此为例:

library(corrplot)
corrplot(cor(mtcars), method = 'square', col = 'red')

enter image description here

答案 2 :(得分:2)

在R中,你应该使用ggplot2size变量,你可以将你的值(你的情况下的基因表达式)映射到my_data <- matrix(rnorm(8*26,mean=0,sd=1), nrow=8, ncol=26, dimnames = list(paste0("gene",1:8), LETTERS)) 变量。在这里,我做了一个类似于你的数据结构的模拟:

ggplot2

然后,您可以处理数据框以准备library(reshape) dat_m <- melt(my_data, varnames = c("gene", "cancer")) 数据可视化:

ggplot2::geom_tile()

现在,使用size将值映射到library(ggplot2) ggplot(data=dat_m, aes(cancer, gene)) + geom_tile(aes(size=value, fill="red"), color="white") + scale_fill_discrete(guide=FALSE) + ##hide scale scale_size_continuous(guide=FALSE) ##hide another scale 变量。您可以更新图表的其他功能。

redirect_to some_rails_path(some_value, params.to_h)

enter image description here