有谁知道这种图表是如何绘制的?好像是热图。然而,不是使用颜色,而是使用每个单元的大小来指示幅度。我想绘制一个这样的人物,但我不知道如何实现它。这可以在R或Matlab中完成吗?
答案 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)
答案 1 :(得分:2)
在R
中,可以使用corrplot
个包。具体而言,您必须在创建绘图时使用method = 'square'
。
以此为例:
library(corrplot)
corrplot(cor(mtcars), method = 'square', col = 'red')
答案 2 :(得分:2)
ggplot2
来size
变量,你可以将你的值(你的情况下的基因表达式)映射到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)