我需要从侧边距中删除空间,因为它占用了大部分空间。 提供了示例代码。主要代码从互联网获取数据。 MainStackoverflow.RMD 文件将调用 ChildStackoverflow.RMD 文件并在循环中生成最终的 html。 主代码中有两个函数用于在运行时生成图表。
主要代码:
library('quantmod')
library('ggplot2')
getSymbols("AAPL", from = "2018/01/01",to = Sys.Date(), periodicity = "daily")
getSymbols("MSFT", from = "2018/01/01",to = Sys.Date(), periodicity = "daily")
getSymbols("META", from = "2018/01/01",to = Sys.Date(), periodicity = "daily")
getSymbols("ORCL", from = "2018/01/01",to = Sys.Date(), periodicity = "daily")
v_lst_cols = c('OPEN','HIGH','LOW','CLOSE','VOLUME','ADJUSTED','DATE')
df_AAPL <- as.data.frame(AAPL)
df_AAPL$DATE <- index(AAPL)
rownames(df_AAPL) <- NULL
names(df_AAPL) <- v_lst_cols
df_AAPL$SYMBOL <- 'AAPL'
df_MSFT <- as.data.frame(MSFT)
df_MSFT$DATE <- index(MSFT)
rownames(df_MSFT) <- NULL
names(df_MSFT) <- v_lst_cols
df_MSFT$SYMBOL <- 'MSFT'
df_META <- as.data.frame(META)
df_META$DATE <- index(META)
rownames(df_META) <- NULL
names(df_META) <- v_lst_cols
df_META$SYMBOL <- 'META'
df_ORCL <- as.data.frame(ORCL)
df_ORCL$DATE <- index(ORCL)
rownames(df_ORCL) <- NULL
names(df_ORCL) <- v_lst_cols
df_ORCL$SYMBOL <- 'ORCL'
df_all <- rbind(df_AAPL, df_MSFT,df_META,df_ORCL)
df_all <- df_all[, c('SYMBOL','DATE','OPEN','HIGH','LOW','CLOSE','VOLUME','ADJUSTED')]
names(df_all) <- c('Symbol','Date','Open','High','Low','Close','Volume','Adjusted')
v_lst_all_symbol = c('AAPL','MSFT','META','ORCL')
v_glbl_shrt_rpt_prd = 30
v_glbl_long_rpt_prd = 220
v_par_list = list()
for(i in 1:length(v_lst_all_symbol)){
v_tmp_list = list(Symbol = v_lst_all_symbol[i])
v_par_list[[i]] =v_tmp_list
}
v_max_date = max(df_all$Date)
p_dt_hdr_fixed_file = data.table(df_all[df_all$Date == v_max_date,])
#- - - - - - - -
func_plot_nyrs_data_test <- function(p_yrs,p_Symbol){
#print(i_yrs)
if ( p_yrs == 5) { v_width = "6 month"}
if ( p_yrs == 2) { v_width = "3 month" }
print(p_Symbol)
df_tmp_hist_dat <- df_all %>% dplyr::filter(Symbol == p_Symbol) %>% dplyr::filter(as.Date(Date) > Sys.Date()-p_yrs*365)
v_cur_close <- df_tmp_hist_dat$Close[1]
v_low_min = min(df_tmp_hist_dat$Low,na.rm = TRUE)
v_high_max = max(df_tmp_hist_dat$High, na.rm = TRUE)
v_def = round((v_high_max- v_low_min)/20)
if (v_def == 0) {
v_def = round((v_high_max- v_low_min)/20,1)}
if (v_def == 0) {
v_def = round((v_high_max- v_low_min)/20,2)}
if (v_def > 0) {
if (nrow(df_tmp_hist_dat) >= 60) {
return(ggplot(df_tmp_hist_dat, aes(x = Date, y = Close, group = 1)) + geom_line(data = ) +
scale_x_date(date_labels = "%Y%b",breaks = scales::date_breaks(width = v_width)) +
theme(text = element_text(size = 10),axis.text.x = element_text(face = "bold", color = "#993333",size = 10, angle = 45),
axis.text.y = element_text(face = "plain", color = "#993333",size = 9, angle = 0)) +
scale_y_continuous(breaks = c(seq(1,50000,v_def))) + theme(panel.background = element_rect(fill = 'grey87'),panel.grid.major.y = element_line(colour = c("chartreuse4","cadetblue4", "brown4","blue1","deeppink"), linetype = 4)) +
labs(subtitle = paste(p_Symbol,p_yrs,'yrs') ))
}
}
}
------
func_base_make_candle_chart_new_test <- function(p_symbol,p_grph_prd, p_dat = df_all) {
v_max_date = max(p_dat$Date);vals <- p_dat %>% filter(Symbol == p_symbol & Date > v_max_date-(p_grph_prd))
if (nchar(vals$Date[1]) == 8){
vals$Date <- as.Date(as.character(vals$Date), '%Y%m%d')
} else{
vals$Date <- as.Date(vals$Date) }
names(vals)[names(vals) == 'Vol'] = 'Volume'
ts <- xts(vals %>% select(Open, High, Low, Close, Volume),
order.by = vals %>% pull(Date))
candleChart(ts, name = p_symbol, type = "auto", up.col = "green", dn.col = "red", theme = "white", plot = TRUE, TA = c(addVo()))
}
library('rmarkdown')
v_rmd_file = '/path/MainStackoverflow.RMD'
v_output_file = '/path/Output.html'
rmarkdown::render(v_rmd_file,output_file = v_output_file_html, output_dir = v_output_dir)
#=========================================================
# **MainStackoveflow.RMD File**
```{r message=FALSE, warning=FALSE}
```
---
title: "Test"
output:
html_document:
css: styles.css
pdf_document: default
---
```{r setup, include=FALSE, echo=FALSE, , message=FALSE, warning=FALSE, out.width= 15 , cache = FALSE}
library(knitr)
library(kableExtra)
```
echo("one")
```{r, fig.cap = "Test Graphs", echo = FALSE}
if (1==1){
kable(p_dt_hdr_fixed_file) %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = T, position = "center", font_size = 11)}
```
```{r, echo=TRUE}
#print('Test')
#print(paste('after before knit expand --> ', length(v_par_list)))
rmd <- sapply(
1:length(v_par_list),
function(x) {
knit_expand("DetailStackoverflow.RMD", x=x, p_Symbol=v_par_list[[x]]$Symbol)
}
)
rmd <- paste(rmd, collapse = "\n")
```
```{r results = "asis", echo=FALSE}
rendered <- knit(text = rmd, quiet = TRUE)
cat(rendered, sep = "\n")
```
#===================================================
**DetailStackoverflow.RMD file**
```{r message=TRUE, warning=TRUE}
```
##### {{paste(p_Symbol,'-----' )}}
style="padding:0px;"
```{r, fig.cap = "The caption: ID = {{p_Symbol}}", fig.width=10,fig.fullwidth=TRUE,echo = FALSE, results = 'asis', warning = FALSE , cache = FALSE}
i <- {{x}}
v_Symbol = v_par_list[[i]]$Symbol
cat("
<style>
caption {
color: black;
font-weight: bold;
font-size: 1.0em;
}
</style>
")
#print(v_company)
```
```{r, fig.cap = "Yearly Graphs",fig.width=10,fig.fullwidth=TRUE,fig.height=5, echo = FALSE,fig.align='center', cache = FALSE}
#| column: page
func_plot_nyrs_data_test(2,v_Symbol)
func_base_make_candle_chart_new_test(v_Symbol,v_glbl_shrt_rpt_prd)
```
如果使用四开本,可以使用
column
选项。所有需要更宽边距的内容都可以使用 column
选项放入受围栏的 div 内。请参阅文档了解更多选项。
main.qmd 或 main.Rmd 使用 Quarto 处理
:::{.column-page}
YOUR CODE AND TEXT HERE
:::
按照 this SO 答案,还可以使用自定义 CSS 以及主 .Rmd 文件的 YAML 中的引用。
自定义.css
div.main-container {
max-width: 1600px !important;
}
主要.Rmd
---
title: asd
author: abc
date: "`r format(Sys.time(), '%d %B, %Y')`"
output:
html_document:
toc: true
toc_float: true
toc_depth: 6
mathjax: null
css: doc.css
---