如何解决ggplot theme_bw不适用于读取数据,但相同的确切代码对mtcars数据也可以正常工作
我有如下数据,其中约2000行其中sample_name是唯一的(它实际上是一个因子值,但我在这里进行了转换以使其隐藏):
head(df)
sample_name metric metric_name metric_mean metric_sd year_month
1 1 0 my_metric 154260.5 76782.54 2020-08
2 2 156845 my_metric 154260.5 76782.54 2020-08
3 3 78015 my_metric 154260.5 76782.54 2020-08
4 4 87620 my_metric 154260.5 76782.54 2020-08
5 5 102581 my_metric 154260.5 76782.54 2020-08
6 6 145976 my_metric 154260.5 76782.54 2020-08
我正在使用RMD内容来生成带有图的PDF。如使用rmarkdown PDF转换生成的输出图所示,生成的图将删除theme_bw()
。
---
title: "Example"
author: John Doe
output: pdf_document
---
# Here is my plot
This is a plot of mpg vs. number of cylinders in a car.
```{r,results = 'asis',echo = FALSE,eval = TRUE,message = FALSE,warn = FALSE}
library(ggplot2)
library(data.table)
df <- fread('/tmp/gopala.csv',data.table = FALSE)
metric_mean <- unique(df$metric_mean)
metric_sd <- unique(df$metric_sd)
metric_name <- unique(df$metric_name)
year_month <- unique(df$year_month)
ggplot(df,aes(x = sample_name,y = metric)) +
geom_point(size = 0.5,color = '#1F77B4') +
labs(
title = paste0('CHART FOR PERIOD ',year_month),x = 'NAME',y = toupper(metric_name)
) +
geom_hline(yintercept = metric_mean,color = 'red',size = 0.5) +
geom_hline(
yintercept = metric_mean + metric_sd,color = 'blue',size = 0.5
) +
geom_hline(
yintercept = metric_mean - metric_sd,linetype = 'dashed',size = 0.5
) +
geom_hline(
yintercept = metric_mean + 2 * metric_sd,color = 'purple',size = 0.5
) +
geom_hline(
yintercept = metric_mean - 2 * metric_sd,size = 0.5
) +
geom_hline(
yintercept = metric_mean + 3 * metric_sd,color = 'green',size = 0.5
) +
geom_hline(
yintercept = metric_mean - 3 * metric_sd,size = 0.5
) +
geom_text(
aes(
label = paste0('Mean (',round(metric_mean,2),')'),x = Inf,y = metric_mean,fontface = 'bold'
),hjust = 1
) +
geom_text(
aes(
label = paste0('+1SD (',round(metric_mean + metric_sd,y = metric_mean + metric_sd,color = 'blue'
),hjust = 1
) +
geom_text(
aes(
label = paste0('-1SD (',round(metric_mean - metric_sd,y = metric_mean - metric_sd,hjust = 1
) +
geom_text(
aes(
label = paste0('+2SD (',round(metric_mean + 2 * metric_sd,y = metric_mean + 2 * metric_sd,color = 'purple'
),hjust = 1
) +
geom_text(
aes(
label = paste0('-2SD (',round(metric_mean - 2 * metric_sd,y = metric_mean - 2 * metric_sd,hjust = 1
) +
geom_text(
aes(
label = paste0('+3SD (',round(metric_mean + 3 * metric_sd,y = metric_mean + 3 * metric_sd,color = 'green'
),hjust = 1
) +
geom_text(
aes(
label = paste0('-3SD (',round(metric_mean - 3 * metric_sd,y = metric_mean - 3 * metric_sd,hjust = 1
) +
theme_bw() +
theme(
plot.title = element_text(hjust = 0.5),axis.text.x = element_blank(),axis.ticks.x = element_blank(),legend.position = 'none'
)
```
将前几行更改为以下内容,可使一切正常:
metric_mean <- mean(mtcars$mpg)
metric_sd <- sd(mtcars$mpg)
ggplot(mtcars,aes(x = wt,y = mpg)) +
geom_point(size = 0.5,color = '#1F77B4') +
labs(
title = 'WT vs. MPG',x = 'WT',y = 'MPG'
) +
对于我的一生,我无法弄清原因。
附加:如果有人知道如何在不使用绝对值的情况下将我的“文本”标签微调(相对比例),那也将很有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。