Просмотр исходного кода

Compatibility with future ggplot2 (#79)

* use UK spelling of colour

* Increment version number to 0.4.2.9000

* docs: add NEWS item

* chore: devtools::document()

---------

Co-authored-by: Garrick Aden-Buie <garrick@adenbuie.com>
tags/v0.4.3
Teun van den Brand 1 год назад
Родитель
Сommit
fc0ff801e8
Аккаунт пользователя с таким Email не найден
16 измененных файлов: 91 добавлений и 89 удалений
  1. +2
    -2
      DESCRIPTION
  2. +22
    -20
      NEWS.md
  3. +28
    -28
      R/xaringanthemer-package.R
  4. +4
    -4
      man/style_duo.Rd
  5. +4
    -4
      man/style_duo_accent.Rd
  6. +4
    -4
      man/style_duo_accent_inverse.Rd
  7. +2
    -2
      man/style_mono_accent.Rd
  8. +2
    -2
      man/style_mono_accent_inverse.Rd
  9. +4
    -4
      man/style_mono_dark.Rd
  10. +4
    -4
      man/style_mono_light.Rd
  11. +3
    -3
      man/style_solarized_dark.Rd
  12. +3
    -3
      man/style_solarized_light.Rd
  13. +3
    -3
      man/style_xaringan.Rd
  14. +2
    -2
      man/theme_xaringan_base.Rd
  15. +2
    -2
      man/theme_xaringan_inverse.Rd
  16. +2
    -2
      man/theme_xaringan_set_defaults.Rd

+ 2
- 2
DESCRIPTION Просмотреть файл

Type: Package Type: Package
Package: xaringanthemer Package: xaringanthemer
Title: Custom 'xaringan' CSS Themes Title: Custom 'xaringan' CSS Themes
Version: 0.4.2
Version: 0.4.2.9000
Authors@R: Authors@R:
person("Garrick", "Aden-Buie", , "garrick@adenbuie.com", role = c("aut", "cre"), person("Garrick", "Aden-Buie", , "garrick@adenbuie.com", role = c("aut", "cre"),
comment = c(ORCID = "0000-0002-7111-0077")) comment = c(ORCID = "0000-0002-7111-0077"))
Config/testthat/edition: 3 Config/testthat/edition: 3
Encoding: UTF-8 Encoding: UTF-8
Roxygen: list(markdown = TRUE) Roxygen: list(markdown = TRUE)
RoxygenNote: 7.2.1
RoxygenNote: 7.3.2

+ 22
- 20
NEWS.md Просмотреть файл

<!-- NEWS.md is maintained by https://cynkra.github.io/fledge, do not edit -->
# xaringanthemer (development version)

- Update the spelling of `colour` for compatibility with ggplot2 >= 3.5.1 (@teunbrand #79).


# xaringanthemer 0.4.2 # xaringanthemer 0.4.2




# xaringanthemer 0.4.1 # xaringanthemer 0.4.1


* Text alignment in code blocks in `left`, `center`, or `right` aligned slides
* Text alignment in code blocks in `left`, `center`, or `right` aligned slides
no longer matches the slide text. Instead, the code block width is reduced, no longer matches the slide text. Instead, the code block width is reduced,
if possible, and the block is pushed to the left, center, or right using if possible, and the block is pushed to the left, center, or right using
margins (#68). margins (#68).
* The style functions are now more permissive about color names in the `color` * The style functions are now more permissive about color names in the `color`
argument. Color names should be valid CSS classes that can also be used as CSS argument. Color names should be valid CSS classes that can also be used as CSS
variable names, but the `style_` function only stops with an error if the variable names, but the `style_` function only stops with an error if the
color name contains spaces. (@jdlom #69) color name contains spaces. (@jdlom #69)
* Fixed an issue that caused problems rendering the xaringanthemer R Markdown * Fixed an issue that caused problems rendering the xaringanthemer R Markdown
template if the showtext package isn't installed (thanks @beatrizmilz, #65). template if the showtext package isn't installed (thanks @beatrizmilz, #65).


* Added `text_bold_font_weight` argument to xaringanthemer style functions with * Added `text_bold_font_weight` argument to xaringanthemer style functions with
a corresponding CSS rule setting the `font-weight` property of `<strong>` a corresponding CSS rule setting the `font-weight` property of `<strong>`
elements (thanks @matiasandina, #50). elements (thanks @matiasandina, #50).
* The style functions gain a `link_decoration` argument to set the * The style functions gain a `link_decoration` argument to set the
[`text-decoration`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration) [`text-decoration`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration)
property for links (#57). property for links (#57).
* Set slide number font size in `rem` so that increasing the font size at the * Set slide number font size in `rem` so that increasing the font size at the
slide level doesn't result in giant slide numbers (#53). slide level doesn't result in giant slide numbers (#53).


* The xaringanthemer slide skeleton (R Markdown template) will now render when * The xaringanthemer slide skeleton (R Markdown template) will now render when
packages that are used in the template but not in xaringanthemer's Imports are packages that are used in the template but not in xaringanthemer's Imports are
not installed (#52). not installed (#52).
* xaringanthemer no longer sets the `fig.showtext` chunk option when the * xaringanthemer no longer sets the `fig.showtext` chunk option when the
showtext package isn't installed and also when `fig.showtext = FALSE`
showtext package isn't installed and also when `fig.showtext = FALSE`
(thanks @mikedecr #36, #56). (thanks @mikedecr #36, #56).


# xaringanthemes 0.3.4 # xaringanthemes 0.3.4


* Add `header_font_family_fallback` to control fallback fonts for headings * Add `header_font_family_fallback` to control fallback fonts for headings
(thanks @mattwarkentin, #41) (thanks @mattwarkentin, #41)
* New xaringanthemer presentation skeleton with a kitchen sink of typical * New xaringanthemer presentation skeleton with a kitchen sink of typical
slide elements with the goal of making it easier to preview new themes slide elements with the goal of making it easier to preview new themes
during development. during development.
# xaringanthemer 0.3.0 # xaringanthemer 0.3.0


* Adds `theme_xaringan()`, a ggplot2 theme that automatically uses the colors * Adds `theme_xaringan()`, a ggplot2 theme that automatically uses the colors
and font styles of your xaringanthemer style. Also adds
`scale_xaringan_discrete()` and `scale_xaringan_continuous()` functions that
and font styles of your xaringanthemer style. Also adds
`scale_xaringan_discrete()` and `scale_xaringan_continuous()` functions that
use your slides' primary colors for the color or fill aesthetics. These theme use your slides' primary colors for the color or fill aesthetics. These theme
functions can recover the primary colors used in a xaringanthemer (>= 0.3.0) functions can recover the primary colors used in a xaringanthemer (>= 0.3.0)
CSS file even if you don't call the style function directly in your slides. CSS file even if you don't call the style function directly in your slides.
`inverse`, `center`, `middle`, or `bottom`-styled slides. When disabled, `inverse`, `center`, `middle`, or `bottom`-styled slides. When disabled,
you can still enable slide title headers by adding the `header_background` you can still enable slide title headers by adding the `header_background`
class to a slide. (thanks, @Btibert3, #10) class to a slide. (thanks, @Btibert3, #10)
* The underlying template now uses the `whisker` package. * The underlying template now uses the `whisker` package.


* xaringanthemer styles now use CSS variables throughout. Most of the settings
* xaringanthemer styles now use CSS variables throughout. Most of the settings
used in defining a style are stored in CSS variables. The variable names are used in defining a style are stored in CSS variables. The variable names are
documented in their corresponding arguments. For example, the color selected documented in their corresponding arguments. For example, the color selected
for `background_color` is stored in the variable `--background-color`. These for `background_color` is stored in the variable `--background-color`. These
fonts. The new defaults use [Cabin](https://fonts.google.com/specimen/Cabin) fonts. The new defaults use [Cabin](https://fonts.google.com/specimen/Cabin)
for headings and [Noto Sans](https://fonts.google.com/specimen/Noto+Sans) for for headings and [Noto Sans](https://fonts.google.com/specimen/Noto+Sans) for
body text. These fonts are easier to read on screens and at a distance during body text. These fonts are easier to read on screens and at a distance during
presentations, and they support a wide variety of languages and weights.
Another reason for the change is that the xaringan (remarkjs) default body
presentations, and they support a wide variety of languages and weights.
Another reason for the change is that the xaringan (remarkjs) default body
font, _Droid Serif_, is no longer officially included in Google Fonts. font, _Droid Serif_, is no longer officially included in Google Fonts.
* Additional colors can be provided in the `colors` argument, which takes a * Additional colors can be provided in the `colors` argument, which takes a
named vector of colors. The names become both CSS classes and CSS variables named vector of colors. The names become both CSS classes and CSS variables
that can be used throughout your slide styles. For example, that can be used throughout your slide styles. For example,
`colors = c(red = "#d34213")` creates a `.red` CSS class for red foreground
`colors = c(red = "#d34213")` creates a `.red` CSS class for red foreground
text, a `.bg-red` CSS class for a red background, and a `--red` CSS variable text, a `.bg-red` CSS class for a red background, and a `--red` CSS variable
that can be referenced as `var(--red)` in any `_color` argument of your style that can be referenced as `var(--red)` in any `_color` argument of your style
function. function.


* Better handling of multiple `extra_fonts`, including improved error messages. * Better handling of multiple `extra_fonts`, including improved error messages.
(Thanks @pat-s, #19). (Thanks @pat-s, #19).
* `style_extra_css()` (previously `write_extra_css()`) gained an `append` * `style_extra_css()` (previously `write_extra_css()`) gained an `append`
argument so that it can append to or overwrite an existing file (thanks @pat-s, #17). argument so that it can append to or overwrite an existing file (thanks @pat-s, #17).


* The underlying tibble holding the theme template variables was updated to
* The underlying tibble holding the theme template variables was updated to
work with `tibble 3.0.0` (thanks @techisdead, @SymbolixAU, #32). work with `tibble 3.0.0` (thanks @techisdead, @SymbolixAU, #32).
* The `css-help` vignette was removed and may be re-written in the future. * The `css-help` vignette was removed and may be re-written in the future.


* Style function arguments that accept CSS property values are now documented in * Style function arguments that accept CSS property values are now documented in

+ 28
- 28
R/xaringanthemer-package.R Просмотреть файл

# I looked up these ggplot geom aesthetic defaults manually via e.g. # I looked up these ggplot geom aesthetic defaults manually via e.g.
# ggplot2::geom_line()$geom$default_aes # ggplot2::geom_line()$geom$default_aes
xaringanthemer_env$std_ggplot_defaults <- list( xaringanthemer_env$std_ggplot_defaults <- list(
"line" = list(color = "black"),
"vline" = list(color = "black"),
"hline" = list(color = "black"),
"abline" = list(color = "black"),
"segment" = list(color = "black"),
"line" = list(colour = "black"),
"vline" = list(colour = "black"),
"hline" = list(colour = "black"),
"abline" = list(colour = "black"),
"segment" = list(colour = "black"),
"bar" = list(fill = "grey35"), "bar" = list(fill = "grey35"),
"col" = list(fill = "grey35"), "col" = list(fill = "grey35"),
"boxplot" = list(color = "grey20", fill = "white"),
"contour" = list(color = "#3366FF"),
"density" = list(color = "black",
"boxplot" = list(colour = "grey20", fill = "white"),
"contour" = list(colour = "#3366FF"),
"density" = list(colour = "black",
fill = NA, fill = NA,
alpha = NA), alpha = NA),
"dotplot" = list(color = "black"),
"errorbarh" = list(color = "black"),
"crossbar" = list(color = "black"),
"errorbar" = list(color = "black"),
"linerange" = list(color = "black"),
"pointrange" = list(color = "black"),
"map" = list(color = "black"),
"path" = list(color = "black"),
"line" = list(color = "black"),
"step" = list(color = "black"),
"point" = list(color = "black"),
"polygon" = list(color = NA,
"dotplot" = list(colour = "black"),
"errorbarh" = list(colour = "black"),
"crossbar" = list(colour = "black"),
"errorbar" = list(colour = "black"),
"linerange" = list(colour = "black"),
"pointrange" = list(colour = "black"),
"map" = list(colour = "black"),
"path" = list(colour = "black"),
"line" = list(colour = "black"),
"step" = list(colour = "black"),
"point" = list(colour = "black"),
"polygon" = list(colour = NA,
fill = "grey20"), fill = "grey20"),
"quantile" = list(color = "#3366FF"),
"rug" = list(color = "black"),
"segment" = list(color = "black"),
"quantile" = list(colour = "#3366FF"),
"rug" = list(colour = "black"),
"segment" = list(colour = "black"),
"smooth" = list(fill = "grey60", "smooth" = list(fill = "grey60",
color = "#3366FF"),
"spoke" = list(color = "black"),
"label" = list(color = "black",
colour = "#3366FF"),
"spoke" = list(colour = "black"),
"label" = list(colour = "black",
family = ""), family = ""),
"text" = list(color = "black",
"text" = list(colour = "black",
family = ""), family = ""),
"rect" = list(fill = "grey35"), "rect" = list(fill = "grey35"),
"tile" = list(fill = "grey20"), "tile" = list(fill = "grey20"),
"violin" = list(fill = "white", color = "grey20")
"violin" = list(fill = "white", colour = "grey20")
) )

+ 4
- 4
man/style_duo.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()}, \code{\link{style_duo_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},
\code{\link{xaringanthemer_font_default}()} \code{\link{xaringanthemer_font_default}()}


Other Duotone themes: Other Duotone themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()}
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()}
} }
\concept{Duotone themes} \concept{Duotone themes}
\concept{themes} \concept{themes}

+ 4
- 4
man/style_duo_accent.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},
\code{\link{xaringanthemer_font_default}()} \code{\link{xaringanthemer_font_default}()}


Other Duotone themes: Other Duotone themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo}()}
\code{\link{style_duo}()},
\code{\link{style_duo_accent_inverse}()}
} }
\concept{Duotone themes} \concept{Duotone themes}
\concept{themes} \concept{themes}

+ 4
- 4
man/style_duo_accent_inverse.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},
\code{\link{xaringanthemer_font_default}()} \code{\link{xaringanthemer_font_default}()}


Other Duotone themes: Other Duotone themes:
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}
\code{\link{style_duo}()},
\code{\link{style_duo_accent}()}
} }
\concept{Duotone themes} \concept{Duotone themes}
\concept{themes} \concept{themes}

+ 2
- 2
man/style_mono_accent.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent_inverse}()}, \code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},

+ 2
- 2
man/style_mono_accent_inverse.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},

+ 4
- 4
man/style_mono_dark.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},
\code{\link{style_solarized_light}()}, \code{\link{style_solarized_light}()},
\code{\link{xaringanthemer_font_default}()} \code{\link{xaringanthemer_font_default}()}


Other Monotone themes: Other Monotone themes:
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_light}()} \code{\link{style_mono_light}()}
} }
\concept{Monotone themes} \concept{Monotone themes}

+ 4
- 4
man/style_mono_light.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},
\code{\link{style_solarized_light}()}, \code{\link{style_solarized_light}()},
\code{\link{xaringanthemer_font_default}()} \code{\link{xaringanthemer_font_default}()}


Other Monotone themes: Other Monotone themes:
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()} \code{\link{style_mono_dark}()}
} }
\concept{Monotone themes} \concept{Monotone themes}

+ 3
- 3
man/style_solarized_dark.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_light}()}, \code{\link{style_solarized_light}()},

+ 3
- 3
man/style_solarized_light.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},

+ 3
- 3
man/style_xaringan.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other themes: Other themes:
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo}()}, \code{\link{style_duo}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_duo_accent}()},
\code{\link{style_duo_accent_inverse}()},
\code{\link{style_mono_accent}()}, \code{\link{style_mono_accent}()},
\code{\link{style_mono_accent_inverse}()},
\code{\link{style_mono_dark}()}, \code{\link{style_mono_dark}()},
\code{\link{style_mono_light}()}, \code{\link{style_mono_light}()},
\code{\link{style_solarized_dark}()}, \code{\link{style_solarized_dark}()},

+ 2
- 2
man/theme_xaringan_base.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other xaringanthemer ggplot2 themes: Other xaringanthemer ggplot2 themes:
\code{\link{theme_xaringan}()},
\code{\link{theme_xaringan_inverse}()}, \code{\link{theme_xaringan_inverse}()},
\code{\link{theme_xaringan_set_defaults}()},
\code{\link{theme_xaringan}()}
\code{\link{theme_xaringan_set_defaults}()}
} }
\concept{xaringanthemer ggplot2 themes} \concept{xaringanthemer ggplot2 themes}

+ 2
- 2
man/theme_xaringan_inverse.Rd Просмотреть файл

} }
\seealso{ \seealso{
Other xaringanthemer ggplot2 themes: Other xaringanthemer ggplot2 themes:
\code{\link{theme_xaringan}()},
\code{\link{theme_xaringan_base}()}, \code{\link{theme_xaringan_base}()},
\code{\link{theme_xaringan_set_defaults}()},
\code{\link{theme_xaringan}()}
\code{\link{theme_xaringan_set_defaults}()}
} }
\concept{xaringanthemer ggplot2 themes} \concept{xaringanthemer ggplot2 themes}

+ 2
- 2
man/theme_xaringan_set_defaults.Rd Просмотреть файл

}} }}
\seealso{ \seealso{
Other xaringanthemer ggplot2 themes: Other xaringanthemer ggplot2 themes:
\code{\link{theme_xaringan}()},
\code{\link{theme_xaringan_base}()}, \code{\link{theme_xaringan_base}()},
\code{\link{theme_xaringan_inverse}()},
\code{\link{theme_xaringan}()}
\code{\link{theme_xaringan_inverse}()}
} }
\concept{xaringanthemer ggplot2 themes} \concept{xaringanthemer ggplot2 themes}

Загрузка…
Отмена
Сохранить