首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对ggplots的情节做这样的修改

对ggplots的情节做这样的修改
EN

Stack Overflow用户
提问于 2021-01-08 18:12:52
回答 2查看 354关注 0票数 0

我有这样的数据

代码语言:javascript
复制
> dput(x)
structure(list(gene = c("14q", "20q", "18q", "4q", "21p", "21q", 
"5q", "22q", "17p", "3p", "9p", "4p", "9q", "19q", "10q", "15q", 
"16p", "19p", "1p", "18p", "16q", "8p"), CNV = c("Deletion", 
"Amplification", "Deletion", "Deletion", "Deletion", "Deletion", 
"Deletion", "Deletion", "Deletion", "Deletion", "Deletion", "Deletion", 
"Deletion", "Deletion", "Deletion", "Deletion", "Deletion", "Deletion", 
"Deletion", "Deletion", "Deletion", "Deletion"), log10_pvalue = c(1.197226275, 
1.88941029, 5.974694135, 5.73754891, 4.995678626, 4.970616222, 
4.793174124, 4.793174124, 4.109020403, 3.524328812, 3.524328812, 
2.823908741, 2.567030709, 2.186419011, 1.769551079, 1.59345982, 
1.59345982, 1.59345982, 1.416801226, 1.195860568, 1.094743951, 
1.087777943), Percentage_altered = c(3000, 5000, 6100, 5300, 
6100, 5600, 4400, 5000, 5000, 4400, 5000, 4700, 3900, 2800, 3300, 
3100, 3300, 3100, 2200, 3600, 3300, 3300), group = c("Responders", 
"Responders", "Non-responders", "Non-responders", "Non-responders", 
"Non-responders", "Non-responders", "Non-responders", "Non-responders", 
"Non-responders", "Non-responders", "Non-responders", "Non-responders", 
"Non-responders", "Non-responders", "Non-responders", "Non-responders", 
"Non-responders", "Non-responders", "Non-responders", "Non-responders", 
"Non-responders")), row.names = c(NA, -22L), class = "data.frame")

我用过这个代码

代码语言:javascript
复制
> p=x %>% 
Warning messages:
1: ggrepel: 6 unlabeled data points (too many overlaps). Consider increasing max.overlaps 
2: ggrepel: 6 unlabeled data points (too many overlaps). Consider increasing max.overlaps 
+     mutate(net_frequency=ifelse(CNV == "Deletion", -Percentage_altered/100, Percentage_altered/100),
+            log10_pvalue = if_else(CNV == "Deletion", log10_pvalue, log10_pvalue)) %>% 
+     ggplot(aes(x = log10_pvalue, y = net_frequency, color = log10_pvalue)) +
+     geom_point(aes(size=Percentage_altered)) +
+     geom_text_repel(aes(label=gene), force=15) +
+     geom_hline(yintercept=0, lty=2) +
+     scale_color_distiller(type = "div",palette = 5) +
+     theme_classic() +
+     facet_wrap(~group)
> p+xlab("-log10(qvalue)")+ylab("Net frequency of gain and deletion (%)")+theme(
+     plot.title = element_text(color="black", size=14, face="bold.italic"),
+     axis.title.x = element_text(color="black", size=14, face="bold"),
+     axis.title.y = element_text(color="black", size=14, face="bold")
+ )+theme(axis.text.x = element_text(face="bold", color="black", 
+                                    size=14),
+         axis.text.y = element_text(face="bold", color="black", 
+                                    size=14))

策划这样的事情

我这里有一些问题

1-你在这里看到,染色体臂的大小,如1p14q,轮轮太小,太读,甚至颜色导致一些手臂无法读懂。我如何使这些元素的文本大小更大?

2-如何从Y x I (60 and 30 instead of -30 and -60)中移除负号

3-如何将图例标题从Percentage_altered改为Frequency altered,将log10_pvalue更改为-log10(qvalue)

提前谢谢你

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-08 18:50:26

  1. geom_repel_text(..., size = 15)
  2. 编写一个使用abs的“标记器”函数。 Note:也许你的意思是否定所有,而不是仅仅否定绝对值?在这种情况下,您可以使用`-`而不是abs,也可以使用scale_y_reverse
  3. scale_*_continuous(name="quux", ...)
代码语言:javascript
复制
p <- x %>%
  mutate(
    net_frequency = if_else(CNV == "Deletion", -Percentage_altered/100, Percentage_altered/100),
    log10_pvalue = if_else(CNV == "Deletion", log10_pvalue, log10_pvalue) # ??? kept
  ) %>% 
  ggplot(aes(x = log10_pvalue, y = net_frequency, color = log10_pvalue)) +
  geom_point(aes(size = Percentage_altered)) +
  geom_text_repel(aes(label = gene), size = 15, force = 15) +
  #                                  ^^^^ 1
  geom_hline(yintercept = 0, lty = 2) +
  scale_y_continuous(labels = abs) +
  #                  ^^^^^^ 2
  scale_color_distiller(name = "-log10(qvalue)", type = "div",palette = 5) +
  #                     ^^^^ 3
  scale_size_continuous(name = "Frequency Altered") +
  #                     ^^^^ 3
  theme_classic() +
  facet_wrap(~ group)

p +
  labs(x = "-log10(qvalue)", y = "Net frequency of gain and deletion (%)") +
  theme(
    plot.title = element_text(color="black", size=14, face="bold.italic"),
    axis.title.x = element_text(color="black", size=14, face="bold"),
    axis.title.y = element_text(color="black", size=14, face="bold"),
    axis.text.x = element_text(face="bold", color="black", size=14),
    axis.text.y = element_text(face="bold", color="black", size=14)
  )

(您需要为您的报告媒体找到一个合适的size=,这里只为强调而夸大。)

顺便说一句,Stack的搜索引擎可以调整,以提供知情的结果。

  1. [r] ggplot2 text size生产文本字体大小控制
  2. [r] ggplot2 axis label format生产自定义ggplot2轴和标签格式
  3. [r] ggplot2 legend title生产如何在ggplot中更改图例标题
票数 1
EN

Stack Overflow用户

发布于 2021-01-08 18:54:28

以下是对你问题的一些回答。

虽然我不知道你为什么要删除y轴上的减号。

对于geom_tex_repel,你可以玩nudge_..overlap,你应该看一看幻影的软件包,小插曲这里

对缩放和legend.title的更改在代码中进行了注释。

也许你可以用理性来回应去除负号的背后。

代码语言:javascript
复制
library(tidyverse)
library(ggrepel)

df %>%
  mutate(
    net_frequency = ifelse(CNV == "Deletion",
      -Percentage_altered / 100, Percentage_altered / 100
    ),
    log10_pvalue = if_else(CNV == "Deletion", log10_pvalue, log10_pvalue)
  ) %>%
  ggplot(aes(x = log10_pvalue, y = net_frequency, color = log10_pvalue)) +
  geom_point(aes(size = Percentage_altered)) +
  # play with nudge and overlap
  geom_text_repel(aes(label = gene), force = 15, nudge_x = 5, max.overlaps = Inf) +
  geom_hline(yintercept = 0, lty = 2) +
  scale_color_distiller(type = "div", palette = 5) +
  # here you can change the tick labels
  scale_y_continuous(
    breaks = seq(-60, 60, 30),
    labels = c("60", "30", "0", "30", "60")
  ) +
  theme_classic() +
  # here you can change title of legend
  guides(size = guide_legend(title = "Frequency altered")) +
  facet_wrap(~group)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65634277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档