我使用基因组数据来绘制三核苷酸的频率。我想用ggplot2生成png绘图,并且我在 Linux Centos 计算机上工作。如图所示,x.axis 标签未完全对齐,因为字母大小不同。我想使用等宽字体,所以我尝试使用“family”参数来修改主题,但这没有效果。我已经使用“extrafont”包看到并测试了许多答案,但没有结果,因为它似乎不适用于 png 输出。有没有一种简单的方法可以在 ggplot2 中使用等宽字体(例如 Courier),使用或不使用附加包?
这是迄今为止我基于最小数据集的代码示例。
testData <- data.frame(freq = rnorm(10),
context = c("ACA","ACC","ACG","ACT","CCA",
"CCC","CCG","CCT","GCA","GCC"))
a <- ggplot(testData, aes(x=context, y=freq)) +
geom_bar(stat="identity", width = 0.4, fill = "royalblue") +
theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5,
size = 10, family = "mono"),
axis.title.x=element_blank())
ggsave("test.png",
plot=a,
width=2, height=2,
device = "png",
dpi = 300,
type = "cairo")
Run Code Online (Sandbox Code Playgroud) 我想在特定位置创建一个新变量.我可以创建变量mutate然后重新排序,select但我宁愿选择tibble:add_column这样做的方式.
这是iris数据集的一个简单示例:
library(tidyverse)
## This works fine
iris %>% mutate(With_mutate = ifelse(Sepal.Length > 4 & Sepal.Width > 3 , TRUE, FALSE)) %>%
select(Sepal.Length:Petal.Width, With_mutate, everything()) %>%
head()
## This works also
iris %>% add_column(With_add_column = "Test", .before = "Species") %>%
head()
## This doesn't work
iris %>% add_column(With_add_column = ifelse(Sepal.Length > 4 & Sepal.Width > 3 , TRUE, FALSE), .before = "Species") %>%
head()
Error in ifelse(Sepal.Length > 2 & Sepal.Width > 1, TRUE, …Run Code Online (Sandbox Code Playgroud) 我使用tidyverse来过滤掉一个数据帧,并希望在中间对象的尺寸(或nrows)的每一步打印.我以为我可以简单地使用magrittr的三通管道操作员,但它不起作用.我想我理解发球管背后的概念,但无法弄清楚出了什么问题.我进行了广泛的搜索,但没有找到太多关于三通管的资源.
我用mtcars数据集构建了一个简单的例子.如果我用dim()或nrow()替换,则打印中间对象可以正常工作.
library(tidyverse)
library(magrittr)
mtcars %>%
filter(cyl > 4) %T>% dim() %>%
filter(am == 0) %T>% dim() %>%
filter(disp >= 200) %>% dim()
Run Code Online (Sandbox Code Playgroud)
我当然可以在R base中写这个但是想坚持整齐的精神.我可能看到了关于T恤管概念的一些内容,我们将非常感谢任何评论/解决方案.
编辑: 关注@hrbrmstr和@akrun很好和快速的答案,我再次尝试坚持tee管道操作员而不编写函数.我不知道为什么我之前没有找到答案,但这里是我正在寻找的语法:
mtcars %>%
filter(cyl > 4) %T>% {print(dim(.))} %>%
filter(am == 0) %T>% {print(dim(.))} %>%
filter(disp >= 200) %>% {print(dim(.))}
尽管需要一个功能,@ hrbrmstr解决方案确实更容易"清理".