【问题标题】:Highlight individual bar in ggplot2 bar chart that corresponds to an individual's specific PDF report突出显示 ggplot2 条形图中与个人特定 PDF 报告相对应的单个条形
【发布时间】:2020-06-22 18:33:57
【问题描述】:

抱歉标题不好,我不确定如何最好地传达我的问题所在。

为了提供一些背景信息,我想使用 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 循环创建了一个 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 报告用蓝色突出显示,其余的为灰色,那将是惊人的。非常感谢任何帮助!

【问题讨论】:

    标签: r pdf ggplot2 r-markdown knitr


    【解决方案1】:

    你的代码有一些错误,所以我在这里给出正确的文件。

    RMD 文件:

    你必须提交参数,在你的情况下i。您也在 name &lt;- 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)))}
    

    【讨论】:

      猜你喜欢
      • 2019-03-26
      • 2018-10-03
      • 2023-03-11
      • 2014-04-04
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      相关资源
      最近更新 更多