Как добавить горизонтальную полосу прокрутки для графика ggplot в RMarkdown html - PullRequest
0 голосов
/ 21 сентября 2018

Я недавно начал использовать RMarkdown для составления отчетов.Конкретный отчет, над которым я работаю, содержит таблицы и графики для данных, полученных в результате многих экспериментов, проведенных за эти годы - своего рода быстрое обновление и обобщение данных.

Хотя я нашел способ добавить полосы прокрутки / поля прокрутки для таблиц (с помощью Kable) и выходные данные фрагментов кода, я не смог добавить полосы прокрутки для графиков.Большинство графиков невелики, и это не проблема, но для одного / двух графиков существует много категорий, и мне нужно, чтобы график не изменял размеры при изменении размера окна браузера или увеличении ширины всей страницы.В идеале, если это возможно, он должен быть определенного размера и иметь полосу прокрутки фиксированной ширины.

Вот пример того, какой сюжет я пытаюсь сделать.Любые предложения приветствуются!

---
title: "Add horizontal scrol"
author: "KTy"
date: "9/21/2018"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
require(ggplot2)
```

## R Markdown
### Want to add horizontal scroll bar around a plot

```{r rnorm_box_violin}
set.seed(2300)
xdf1 <- data.frame(  var1 = rnorm(  10000 , mean = 5000 , sd = 10) , str1 = rep("a0",10000)  )

for ( x in 10:50 ){
  n <- sample(x = c(10,0.1) , size = 1)
  xdf2 <- data.frame( var1 = rnorm(  x*n*1000 , mean = 5000+(x/2) , sd = 10) , str1 = rep(paste0("a",x),x*n*1000))
  xdf1 <- rbind(xdf1,xdf2)
  }

plot1 <- ggplot(  data = xdf1  , aes( x = str1 , y = var1  ))  + 
  geom_violin(fill='grey90', scale = 'count', colour = 'grey70') + 
   geom_boxplot( width = 0.2 ,  alpha = 0.1 , colour = 'grey30')+
  theme_bw()+
  theme(axis.text.x =  element_text(angle = 45, hjust = 1 ,vjust = 1))
```
Produces this plot:
```{r plot_it , echo = FALSE, width = 20 , height = 7}
plot1
```

Я использую RStudio на Mac.Я надеюсь, что то, что я спрашиваю, имеет смысл, пожалуйста, оставляйте комментарии, если что-то не понятно, и я могу попытаться объяснить дальше.Ура, спасибо!

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете добавить пользовательский CSS в свой документ knitr:

    ...
    plot1 <- ggplot(  data = xdf1  , aes( x = str1 , y = var1  ))  + 
    geom_violin(fill='grey90', scale = 'count', colour = 'grey70') + 
    geom_boxplot( width = 1 ,  alpha = 0.1 , colour = 'grey30')+
    theme_bw()+
    theme(axis.text.x =  element_text(angle = 45, hjust = 1 ,vjust = 1))
```
<style>
  .superbigimage{
      overflow-x:scroll;
      white-space: nowrap;
  }

  .superbigimage img{
     max-width: none;
  }


</style>


This produces the plot with a special css class
<div class="superbigimage">
```{r plot_it , echo = FALSE, fig.width=20,fig.height=3}
plot1
```
</div>


This produces the plot with the default settings
```{r plot_it2 , echo = FALSE, fig.width=20,fig.height=3}
plot1
```

Изображение для ленивого:

enter image description here

...