在 ggplot2 条形图中突出显示与个人特定 PDF 报告相对应的单个条形图
Highlight individual bar in ggplot2 bar chart that corresponds to an individual's specific PDF report
抱歉标题不好,我不确定如何最好地表达我的问题所在。
为了提供一些背景信息,我想使用 Rmarkdown 为我们组织中的每个提供商创建一个个性化记分卡。我已经想出如何为每个提供者创建一个单独的 PDF;但是,我想在每个人的报告中有一个简单的条形图,突出显示提供者的位置,以便他们可以将自己与同行进行比较。以下是我目前所拥有的:
首先我创建了数据集:
############################## Create dataset and export #####################################
df = data.frame(
"Provider" = c("A","B","C","D"),
"Measure" = c(1.2,0.8,1.7,0.4)
)
write.csv(df, "pathway/df.csv")
接下来我创建了一个名为 "TEST" 的 Rmarkdown 文件,它调用数据集并包含一个图表
###################### Create Rmarkdown file named "TEST" ####################################
---
output: pdf_document
---
```{r echo=FALSE}
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
name <- df$Provider[i]
Dear `r name`,
This is your personalized scorecard.
```{r}
ggplot() +
geom_bar(data=df, aes(x=reorder(Provider, -Measure), y=Measure,
fill = factor(ifelse(Provider == "A", "You","Your Peers"))),
stat = "identity") +
scale_fill_manual(name = "Provider", values=c("steelblue","lightgrey"))
最后我用 for-loop 创建了一个 R 文件来创建与提供者一样多的 PDF
################ Run R file with loop to make separate PDFs per Provider #####################
library(knitr)
library(rmarkdown)
#Read data
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
#Create loop
for (i in 1:nrow(df)){
rmarkdown::render(input = "pathway/TEST.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", i, ".pdf", sep=''),
output_dir = "pathway/folder/")
}
在上面的 ggplot2 图表代码中,我手动编码提供者 "A" 以蓝色突出显示,其余提供者为灰色,但我们有 30 多个提供者,我不想手动编码为每一个。如果 Rmarkdown 有某种方法可以自动以蓝色突出显示每个提供商,并为他们的每个 PDF 报告以灰色突出显示其余部分,那将是惊人的。非常感谢任何帮助!
你的代码中有一些错误,所以我在这里给出了正确的文件。
RMD 文件:
您必须提交参数,在您的情况下 i。您也在 name <- df$Provider[i]
中执行了此操作,但未给出 i。您还必须加载 ggplot2
并将您的块设置为正确的位置。
---
output: pdf_document
params:
i: 1
---
```{r echo=FALSE}
library(ggplot2)
df <- read.csv("df.csv", stringsAsFactors = FALSE)
name <- df$Provider[i]
```
Dear `r name`,
This is your personalized scorecard.
```{r}
ggplot() +
geom_bar(data=df, aes(x=reorder(Provider, -Measure), y=Measure,
fill = factor(ifelse(Provider == df$Provider[i], "You","Your Peers"))),
stat = "identity") +
scale_fill_manual(name = "Provider", values=c("steelblue","lightgrey"))
```
R 文件循环
这里你也必须提交参数。
library(knitr)
library(rmarkdown)
#Read data
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
#Create loop
for (i in 1:nrow(df)){
rmarkdown::render(input = "pathway/TEST.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", i, ".pdf", sep=''),
output_dir = "pathway/folder/",
params = list(i = i)))}
抱歉标题不好,我不确定如何最好地表达我的问题所在。
为了提供一些背景信息,我想使用 Rmarkdown 为我们组织中的每个提供商创建一个个性化记分卡。我已经想出如何为每个提供者创建一个单独的 PDF;但是,我想在每个人的报告中有一个简单的条形图,突出显示提供者的位置,以便他们可以将自己与同行进行比较。以下是我目前所拥有的:
首先我创建了数据集:
############################## Create dataset and export #####################################
df = data.frame(
"Provider" = c("A","B","C","D"),
"Measure" = c(1.2,0.8,1.7,0.4)
)
write.csv(df, "pathway/df.csv")
接下来我创建了一个名为 "TEST" 的 Rmarkdown 文件,它调用数据集并包含一个图表
###################### Create Rmarkdown file named "TEST" ####################################
---
output: pdf_document
---
```{r echo=FALSE}
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
name <- df$Provider[i]
Dear `r name`,
This is your personalized scorecard.
```{r}
ggplot() +
geom_bar(data=df, aes(x=reorder(Provider, -Measure), y=Measure,
fill = factor(ifelse(Provider == "A", "You","Your Peers"))),
stat = "identity") +
scale_fill_manual(name = "Provider", values=c("steelblue","lightgrey"))
最后我用 for-loop 创建了一个 R 文件来创建与提供者一样多的 PDF
################ Run R file with loop to make separate PDFs per Provider #####################
library(knitr)
library(rmarkdown)
#Read data
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
#Create loop
for (i in 1:nrow(df)){
rmarkdown::render(input = "pathway/TEST.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", i, ".pdf", sep=''),
output_dir = "pathway/folder/")
}
在上面的 ggplot2 图表代码中,我手动编码提供者 "A" 以蓝色突出显示,其余提供者为灰色,但我们有 30 多个提供者,我不想手动编码为每一个。如果 Rmarkdown 有某种方法可以自动以蓝色突出显示每个提供商,并为他们的每个 PDF 报告以灰色突出显示其余部分,那将是惊人的。非常感谢任何帮助!
你的代码中有一些错误,所以我在这里给出了正确的文件。
RMD 文件:
您必须提交参数,在您的情况下 i。您也在 name <- df$Provider[i]
中执行了此操作,但未给出 i。您还必须加载 ggplot2
并将您的块设置为正确的位置。
---
output: pdf_document
params:
i: 1
---
```{r echo=FALSE}
library(ggplot2)
df <- read.csv("df.csv", stringsAsFactors = FALSE)
name <- df$Provider[i]
```
Dear `r name`,
This is your personalized scorecard.
```{r}
ggplot() +
geom_bar(data=df, aes(x=reorder(Provider, -Measure), y=Measure,
fill = factor(ifelse(Provider == df$Provider[i], "You","Your Peers"))),
stat = "identity") +
scale_fill_manual(name = "Provider", values=c("steelblue","lightgrey"))
```
R 文件循环
这里你也必须提交参数。
library(knitr)
library(rmarkdown)
#Read data
df <- read.csv("pathway/df.csv", stringsAsFactors = FALSE)
#Create loop
for (i in 1:nrow(df)){
rmarkdown::render(input = "pathway/TEST.Rmd",
output_format = "pdf_document",
output_file = paste("handout_", i, ".pdf", sep=''),
output_dir = "pathway/folder/",
params = list(i = i)))}