小编ONe*_*MB1的帖子

调整/手动输入geom_tile的colorbar指南上的中断并替换y轴标签

我正在重新审视大约一年前遇到的这个问题.我希望我的"colourbar"指南能够有效地显示在对数刻度上,以便在查看它时的外观是越来越深的蓝色值反映出更大的意义.

使用以下代码,我生成以下图像:

pz <- ggplot(dat.m, aes(x=variable,y=Category)) +
  geom_tile(aes(fill=value)) +
  xlab(NULL) + ylab(NULL) +
  scale_fill_gradientn(colours=c("#000066","#0000FF","#DDDDDD","white"), 
                   values=c(0,0.05,0.050000000000001,1.0),
                   breaks=c(0, 0.000001, 0.01, 0.05, 1),
                   guide = "colourbar") +
  theme_bw()+
  theme(panel.background = element_blank(),
        panel.border = element_blank(),
        axis.ticks.x = element_blank(),
        axis.ticks.y = element_blank()) +
  theme(legend.position="top",
        legend.text = element_text(angle=45),
        axis.text.x = element_text(angle=45)
  )
Run Code Online (Sandbox Code Playgroud)

colourbar

或者,我可以将其显示为"传奇"而不是"颜色栏":

在此输入图像描述

但我真正想要的是这样的:

在此输入图像描述

我尝试添加'trans ="log"'(scale_fill_gradientn(trans ="log")),但我的数据中有很多零会导致问题.如果您有任何想法,将不胜感激!


以前的措辞:

我正在尝试为不同的分类制作不同样本的p值热图.我想在这个图上修改两件事:

  1. 我想调整我的geom_tile情节的图例来强调图例比例的下端,同时仍然保持渐变的全部光谱 - 类似于它是如何是对数比例的样子.因此,基本上从1.0-0.05的白色到蓝色的过渡以及从0.05-0.00的蓝色到深蓝色的过渡将在大小上大致相等.有没有办法可以手动调整色条指南?

  2. 我想替换y轴名称,以便我可以删除我的"空"行标签.注意,类别在这里只是表示为字母,但在我的真实数据集中它们是长名称.我已经插入了"虚拟"数据行来将分类拆分成chucks并命令每个块中的tile从最重要到最重要 - 我相信有一个更好的解决方案,但这是我想出的我在堆栈溢出时发现的其他想法的失败尝试很多!我试过用它们标记它们scale_y_discrete,但是这与前面提到的订购混杂在一起.

任何这些问题的帮助将不胜感激!

sample_heatmap

这是一个示例数据集:

dput(dat.m)
structure(list(Category = structure(c(12L, 11L, 10L, 9L, 8L, 
7L, 6L, 5L, 4L, 3L, 2L, 1L, …
Run Code Online (Sandbox Code Playgroud)

r heatmap ggplot2

6
推荐指数
1
解决办法
2850
查看次数

在 R 中使用带有 phylo 对象(无根树)的可爱树

我想使用 cutree() 函数将系统发育树聚类到指定数量的进化枝中。然而, phylo 对象(无根的系统发育树)不是 unltrametric,因此在使用 as.hclust.phylo() 时会返回错误。目标是在保留最大多样性的同时对树的尖端进行子采样,因此希望按指定数量的进化枝进行聚类(然后从每个进化枝中随机采样一个)。这将对具有不同数量所需样本的许多树进行。将无根树强制转换为 hclust 对象的任何帮助,或有关将树(系统对象)系统地折叠为预定义数量的进化枝的不同方法的建议,将不胜感激。

library("ape")
library("ade4")



tree <- rtree(n = 32)

tree.hclust <- as.hclust.phylo(tree)
Run Code Online (Sandbox Code Playgroud)

返回:“as.hclust.phylo(tree) 中的错误:树不是超度量的”

如果我制作所有节点之间的分支长度的距离矩阵,我就可以使用 hclust 来生成集群,然后将 cutree 转换为所需数量的集群:

dm <- cophenetic.phylo(tree)


single <- hclust(as.dist(dm), method="single")
cutSingle <- as.data.frame(cutree(single, k=10))
color <- cutSingle[match(tree$tip.label, rownames(cutSingle)), 'cutree(single, k = 10)']

plot.phylo(tree, tip.color=color)
Run Code Online (Sandbox Code Playgroud)

然而,结果并不理想,因为非常基础的分支聚集在一起。基于树结构的聚类,或者尖端到根的距离将是更可取的。

任何建议表示赞赏!

r hclust phylogeny

5
推荐指数
1
解决办法
883
查看次数

ggplot中基于​​百分位的颜色代码点

我有一些非常大的文件,其中包含基因组位置(位置)和相应的种群遗传统计数据(值)。我已经成功绘制了这些值,并希望对前 5%(蓝色)和 1%(红色)的值进行颜色编码。我想知道在 R 中是否有一种简单的方法可以做到这一点。

第一个值

我已经探索过编写一个定义分位数的函数,但是,其中许多最终不是唯一的,从而导致函数失败。我也研究过 stat_quantile 但只成功地使用它来绘制一条标记 95% 和 99% 的线(有些线是对角线,对我来说没有任何意义。)(对不起,我是新手R.)

任何帮助将非常感激。

这是我的代码:(文件非常大)

########Combine data from multiple files
fst <- rbind(data.frame(key="a1-a3", position=a1.3$V2, value=a1.3$V3), data.frame(key="a1-a2", position=a1.2$V2, value=a1.2$V3), data.frame(key="a2-a3", position=a2.3$V2, value=a2.3$V3), data.frame(key="b1-b2", position=b1.2$V2, value=b1.2$V3), data.frame(key="c1-c2", position=c1.2$V2, value=c1.2$V3))


########the plot
theme_set(theme_bw(base_size = 16))

p1 <- ggplot(fst, aes(x=position, y=value)) + 
  geom_point() + 
  facet_wrap(~key) +
  ylab("Fst") + 
  xlab("Genomic Position (Mb)") +
  scale_x_continuous(breaks=c(1e+06, 2e+06, 3e+06, 4e+06), labels=c("1", "2", "3", "4")) +
  scale_y_continuous(limits=c(0,1)) +
  theme(plot.background = element_blank(),
    panel.background = element_blank(),
    panel.border = element_blank(),
    legend.position="none",
    legend.title = …
Run Code Online (Sandbox Code Playgroud)

r facet percentile ggplot2 color-codes

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

标签 统计

r ×3

ggplot2 ×2

color-codes ×1

facet ×1

hclust ×1

heatmap ×1

percentile ×1

phylogeny ×1