相关疑难解决方法(0)

在绘图热图中使用离散的自定义颜色

我正在尝试生成一个plotly heatmap,我希望颜色由离散比例指定。

这就是我的意思:

生成具有 2 个集群的数据并按层次对它们进行聚类:

require(permute)
set.seed(1)
mat <- rbind(cbind(matrix(rnorm(2500,2,1),nrow=25,ncol=500),matrix(rnorm(2500,-2,1),nrow=25,ncol=500)),
             cbind(matrix(rnorm(2500,-2,1),nrow=25,ncol=500),matrix(rnorm(2500,2,1),nrow=25,ncol=500)))
rownames(mat) <- paste("g",1:50,sep=".")
colnames(mat) <- paste("s",1:1000,sep=".")
hc.col <- hclust(dist(t(mat)))
dd.col <- as.dendrogram(hc.col)
col.order <- order.dendrogram(dd.col)
hc.row <- hclust(dist(mat))
dd.row <- as.dendrogram(hc.row)
row.order <- order.dendrogram(dd.row)
mat <- mat[row.order,col.order]
Run Code Online (Sandbox Code Playgroud)

将值放入mat间隔并为每个间隔设置颜色:

require(RColorBrewer)
mat.intervals <- cut(mat,breaks=6)
interval.mat <- matrix(mat.intervals,nrow=50,ncol=1000,dimnames=list(rownames(mat),colnames(mat)))
interval.cols <- brewer.pal(6,"Set2")
names(interval.cols) <- levels(mat.intervals)
Run Code Online (Sandbox Code Playgroud)

使用ggplot2我以这种heatmap方式绘制(也legend指定了离散颜色和各自的范围):

require(reshape2)
interval.df <- reshape2::melt(interval.mat,varnames=c("gene","sample"),value.name="expr")
require(ggplot2)
ggplot(interval.df,aes(x=sample,y=gene,fill=expr))+
  geom_tile(color=NA)+theme_bw()+
  theme(strip.text.x=element_text(angle=90,vjust=1,hjust=0.5,size=6),panel.spacing=unit(0.025,"cm"),legend.key=element_blank(),plot.margin=unit(c(1,1,1,1),"cm"),legend.key.size=unit(0.25,"cm"),panel.border=element_blank(),strip.background=element_blank(),axis.ticks.y=element_line(size=0.25))+
  scale_color_manual(drop=FALSE,values=interval.cols,labels=names(interval.cols),name="expr")+
  scale_fill_manual(drop=FALSE,values=interval.cols,labels=names(interval.cols),name="expr")
Run Code Online (Sandbox Code Playgroud)

这使: 在此处输入图片说明

这是我尝试用以下方法生成它plotly

plot_ly(z=mat,x=colnames(mat),y=rownames(mat),type="heatmap",colors=interval.cols)
Run Code Online (Sandbox Code Playgroud)

这使: …

r heatmap ggplot2 plotly

5
推荐指数
2
解决办法
3571
查看次数

如何在 R Plotly 中基于分类变量创建叶绿体图?

我正在尝试创建美国的叶绿体地图,该地图使用分类变量作为州颜色,但我只得到一张空白地图。绘图地图与分类数据兼容吗?如果是这样,语法如何改变?

对于我的数据,我只是上传一个由状态和随机的“好”、“坏”、“好”之一组成的行表。

我可以在下面的代码中更改什么才能使其正常工作?我尝试了一种解决方法,可以稍微改变状态的颜色,但颜色条变得不稳定。(value4 是我的“好”、“坏”、“好”的分类变量)

如果我的问题不清楚或者我的信息不太好,我深表歉意。如果有人有进一步的问题,我可以回答。提前致谢

foo <- brewer.pal(n = 3,
                        name = "Set1")

df <- mutate(df, test = ntile(x = value4, n = 3))

cw_map <- plot_ly(
  data = df,
  type = "choropleth",
  locations = ~ state,
  locationmode = "USA-states",
  color = ~ test,
  colors = foo[df$test],
  z = ~ test
) %>%
  layout(geo = list(scope = "usa"))

print(cw_map)
Run Code Online (Sandbox Code Playgroud)

maps r categorical-data plotly

3
推荐指数
1
解决办法
1458
查看次数

标签 统计

plotly ×2

r ×2

categorical-data ×1

ggplot2 ×1

heatmap ×1

maps ×1