我想在我的.Rmd文档中自动生成页面。我没有办法做这件事,但我终于找到了一个可以接受的选择(https://somtom.github.io/post/using-dynamically-rendered-r-markdown-childs-for-reports/)。
这个例子一切都很好,但是当我修改它以介绍我的数据时,会出现一些问题。(一些数字未出现在最后文件中)。几个小时后,我发现唯一的问题出现在我试图绘制一个包含pattern=gradient的ggplot时。在这个链接(https://somtom.github.io/post/using-dynamically-rendered-r-markdown-childs-for-reports/)中,您可以找到原始代码。
在这里,您可以找到相同的代码,包括仅在子页面代码中进行的小修改:我用一些随机图形(包括梯度模式)替换了原始代码中的图形。
请注意我放了一些。在块‘之前,为了被识别为单个块代码(您必须删除它们才能运行代码)。
我研究了html代码,发现这个图形绘制得很好,但是它没有出现在相应的图表中。没有渐变的任何其他图形看起来都是正常的。
---
title: "Example Analytics"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
---
# Overview
`r shiny::tags$h1("Overview", style="text-align:center")`
.```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
# Create dummy data for example
set.seed(345)
date_start <- as.Date("2018-01-01")
product_groups <- c("PG1", "PG2", "PG3")
products <- list(
PG1 = c("A", "B", "C"),
PG2 = c("D", "E", "F"),
PG3 = c("G", "H")
)
data <- data.frame(
product_group = sample(product_groups, 100, replace = T),
trade_volume = rnorm(100, mean = 3448, sd = 200),
date = date_start + 1:100
) %>%
group_by(id = row_number()) %>%
mutate(product = sample(unlist(products[[product_group]]), 1, replace = TRUE)) %>%
ungroup()
.```
Row
-----------------------------------------------------------------------
### Trade Volume Development
.```{r fig.width=15, fig.height=5}
data %>%
group_by(date) %>%
summarise(trade_volume = sum(trade_volume)) %>%
ggplot() +
geom_line(aes(x = date, y = trade_volume),
color = "#2780e3",
alpha = 0.8) +
scale_y_continuous(labels = scales::dollar) +
theme_minimal() +
ylab("Trade Volume") +
xlab("Date")
.```
Row
-----------------------------------------------------------------------
### Product Group Share on Trade Volume
.```{r}
data %>%
group_by(product_group) %>%
summarise(trade_volume = sum(trade_volume)) %>%
mutate(trade_volume_share = trade_volume / sum(trade_volume)) %>%
ggplot() +
geom_col(aes(x = reorder(product_group, -trade_volume_share), y = trade_volume_share),
fill = "#2780e3",
alpha = 0.8) +
scale_y_continuous(labels = scales::percent) +
theme_minimal() +
ylab("Share on Trade Volume") +
xlab("Product Group")
.```
### Product Group Share on Order Count
.```{r}
data %>%
group_by(product_group) %>%
summarise(order_count = n()) %>%
mutate(order_count_share = order_count / sum(order_count)) %>%
ggplot() +
geom_col(aes(x = reorder(product_group, -order_count_share), y = order_count_share),
fill = "#2780e3",
alpha = 0.8) +
scale_y_continuous(labels = scales::percent) +
theme_minimal() +
ylab("Share on Order Count") +
xlab("Product Group")
.```
.```{r render subpages, include=FALSE}
# Get all unique product groups for the subpages
product_groups <- unique(data$product_group)
# Create variable which stores all subpages outputs
out = NULL
# Set knitr options to allow duplicate labels (needed for the subpages)
options(knitr.duplicate.label = 'allow')
# Create temporary environment which we use for knitting subpages.RMD
subpage_env <- new.env()
for (pg in product_groups) {
# Filter data for product group
subpage_data <- data %>%
filter(product_group == pg)
# Assign filtered data and product group to subpage_env
assign("subpage_data", subpage_data, subpage_env)
assign("product_group", pg, subpage_env)
# Knit subpage.RMD using the subpage_env and add result to out vector
out = c(out, knitr::knit_child('subpage.RMD', envir = subpage_env))
}
.```
`r paste(knitr::knit_child(text = out), collapse = '')``r paste0('# ', product_group, '{data-navmenu="Product Groups"}')`
`r shiny::tags$h1(product_group, style="text-align:center")`
Row
-----------------------------------------------------------------------
### Product Share on Trade Volume
.```{r fig.width=10}
#------------------------------------------! MODIFICATION INCLUDING GRADIENT PLOT-------------------------------------
df <- data.frame(
trt = c("a", "b", "c"),
outcome = c(2.3, 1.9, 3.2)
)
ggplot(df, aes(trt, outcome)) +
geom_col_pattern(
aes(
pattern_fill = trt,
pattern_orientation = trt
),
pattern = 'gradient',
pattern_fill2 = 'white',
colour = 'black'
) +
theme_bw(15) +
labs(
title = "ggpattern::geom_col_pattern()",
subtitle = "pattern = 'gradient'"
) +
theme(
legend.key.size = unit(1.5, 'cm')
) +
coord_fixed(ratio = 1/2)
.```
### Products with Most Trade Volume
.```{r}
subpage_data %>%
group_by(Product = product) %>%
summarise(`Trade Volume [€]` = sum(trade_volume)) %>%
arrange(-`Trade Volume [€]`) %>%
knitr::kable()
.```发布于 2021-04-29 11:20:39
geom_col_pattern是ggpattern 套餐的一部分--它不在ggplot2(tidyverse)中,您需要将包添加到您的文件中,如果您希望该函数工作的话。在您的问题中,您问了关于geom_pattern的问题,但是看起来这个函数实际上是geom_col_pattern()或ggpattern::geom_col_pattern()
发布于 2021-12-05 16:43:50
尝试使用{ggpattern}. 这解决了另一个用户的类似问题。显式禁用R4.1梯度支持。
https://stackoverflow.com/questions/67300194
复制相似问题