From dff1fee04ffb34437dce4aed4e8f20abf8b29421 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Fri, 17 Jan 2020 17:04:35 -0500 Subject: [PATCH 01/30] update copy --- .../2015-04-09-static-image_r_index.Rmd | 53 +++++--- .../2015-04-09-static-image_r_index.md | 59 ++++++--- .../r/chart-studio/2015-07-30-filenames.Rmd | 30 +++-- _posts/r/chart-studio/2015-07-30-filenames.md | 37 ++++-- .../chart-studio/2015-07-30-get-requests.Rmd | 44 +++---- .../r/chart-studio/2015-07-30-get-requests.md | 40 ++++-- _posts/r/chart-studio/2015-07-30-privacy.Rmd | 38 +++--- _posts/r/chart-studio/2015-07-30-privacy.md | 23 ++-- _posts/r/chart-studio/2015-08-10-knitr.Rmd | 48 ++++--- _posts/r/chart-studio/2015-08-10-knitr.md | 61 ++++++--- .../2015-08-10-plotly-offline.html | 61 +-------- .../2016-02-20-jupyter-notebook-r.html | 4 +- .../2017-07-17-configuration-options.Rmd | 21 ++- .../2017-07-17-configuration-options.md | 21 ++- .../2019-12-18-chart-studio-index.html | 2 +- ...1-17-getting-started-with-chart-studio.Rmd | 121 ++++++++++++++++++ ...01-17-getting-started-with-chart-studio.md | 116 +++++++++++++++++ .../2015-04-09-sending-data_index.html | 2 +- 18 files changed, 526 insertions(+), 255 deletions(-) create mode 100644 _posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd create mode 100644 _posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd index 6920a751da92..be31fa896a94 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd @@ -1,10 +1,10 @@ --- -description: How to export plotly graphs as static images in R. Plotly supports png, - svg, jpg, and pdf image export. +description: How to export R graphs as static images. Ploty's R graphing library supports exporting to .png, + .svg, .jpg, and .pdf file formarts and exporting Chart Studio graphs. display_as: chart_studio language: r layout: base -name: Static Image Export +name: Using Chart Studio to Export Static Images order: 2 output: html_document: @@ -38,24 +38,29 @@ library(plotly) packageVersion('plotly') ``` -### Supported Formats +### Supported Formats For Static Image Export -The common image formats: 'PNG', 'JPG/JPEG' are supported. In addition, formats like 'EPS', 'SVG' and 'PDF' are also available for user with a Personal or Professional subscription. You can get more details on our [pricing page] (https://plot.ly/products/cloud/) +With the `plotly` R package, you can export your charts as static images in the `.png` and `.jpg/.jpeg` file formats. -**Note:** It is important to note that any figures containing WebGL traces (i.e. of type scattergl, heatmapgl, contourgl, scatter3d, surface, mesh3d, scatterpolargl, cone, streamtube, splom, or parcoords) that are exported in a vector format like SVG, EPS or PDF will include encapsulated rasters instead of vectors for some parts of the image. +Currenlty, exporting charts as static images in the `.eps`, `.svg`, and `.pdf` formats is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). -To access the image in a particular format, you can either: +**Note:** It is important to be aware that any R charts containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, or `parcoords`) that are exported in a vector format like `.eps`, `.svg`, and `.pdf` will include encapsulated rasters instead of vectors for some parts of the image. +### Supported Methods Static Image Export -* use the `orca()` function. [Orca](https://github.com/plotly/orca) is Plotly's command line applications for generating static images. +To export R charts as static images with the `plotly` R package, you can: -* export the image on plotly's servers using `plotly_IMAGE()`. +* use the built-in integration with [Orca](https://github.com/plotly/orca), Plotly's command line application for generating static images. -* append the format extension to the plot url. i.e. the JPG version of the plot: https://plot.ly/~chris/1638 is available at : https://plot.ly/~chris/1638.jpg. +* export the image using your Chart Studio account using the `plotly_IMAGE()` fucntion. -### Export Locally +* append the format extension to the plot url of an existing Chart Studio plot. For example, the `.jpg` version of the plot at https://plot.ly/~chris/1638 is available at https://plot.ly/~chris/1638.jpg. The `.png` version of the plot is available at https://plot.ly/~chris/1638.png. -`4.7.900` and above includes the `orca()` function (replacing the `export()` function), which exports images locally, but requires the processx package: +#### Using Orca To Export Static Images Locally + +Version `4.7.900` and above of the `plotly` R package include the `orca()` function (replacing the `export()` function). + +This function exports images locally using [Orca](https://github.com/plotly/orca). In order to use Orca with the `plotly` R package, you need to install the [`processx`](https://github.com/r-lib/processx) package as well. ```{r, eval = FALSE} if (!require("processx")) install.packages("processx") @@ -65,19 +70,24 @@ p <- plot_ly(z = ~volcano) %>% add_surface() orca(p, "surface-plot.svg") ``` -### Export Using Your Plotly Account +#### Using Chart Studio to Export Static Images -Another option is to do image export through your plotly account. +Another option for exporting the R charts you create with the `plotly` R package is to use your Chart Studio account. -First, you will require the development version of plotly, this can be installed using `devtools::install_github("ropensci/plotly")`. In addition, if you haven't already, let the R package know about your credentials. +This requires using the development version of the `plotly` R package from GitHub. This can be installed using the [`devtools`](https://cran.r-project.org/web/packages/devtools/index.html) R package. +```r +devtools::install_github("ropensci/plotly") +``` + +In addition, if you haven't already, let the R session know about your Chart Studio authorization credentials by setting environment variables using [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv). ```{r, eval = FALSE} Sys.setenv("plotly_username" = "YOUR USER NAME") Sys.setenv("plotly_api_key" = "YOUR API KEY") ``` -This option will export the image on plotly's servers and write the content to a local file `"output.png"` in your working directory. +The `plotly_IMAGE()` function exports plots as static images using the Chart Studio web service. The image will be stored in a file in the working directory of your R session. ```{r} library(plotly) @@ -87,7 +97,12 @@ plotly_IMAGE(p, format = "png", out_file = "output.png") ![](https://images.plot.ly/plotly-documentation/images/output.png) -### Appending File Type to URL +#### Appending Static Image File Types to Chart Studio Plot URLs + +You can also view the static image version of any public Chart Studio graph by appending `.png` or `.jpeg` to the end of the URL for the graph. + +For example, view the static image of at . + +[Chart Studio Enterprise](https://plot.ly/online_chart_maker) users can also use this method to get static images in the `.pdf`, `.svg`, and `.eps` file formats. -You can also view the static version of any Plotly graph by appending `.png`, -`.pdf`, `.eps`, or `.svg` to the end of the URL. For example, view the static image of at . See [Using Plotly with rmarkdown/knitr](https://plot.ly/r/knitr/) for a way to embed these links in rmarkdown/knitr (Rmd) files. +See [Embedding Graphs in RMarkdown](https://plot.ly/r/embedding-graphs-in-rmarkdown/) to learn more about embedding R charts in RMarkdown (.Rmd) files. \ No newline at end of file diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md index e2c4c7884c41..f1fbbf589c36 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md @@ -1,10 +1,10 @@ --- -description: How to export plotly graphs as static images in R. Plotly supports png, - svg, jpg, and pdf image export. +description: How to export R graphs as static images. Ploty's R graphing library supports exporting to .png, + .svg, .jpg, and .pdf file formarts and exporting Chart Studio graphs. display_as: chart_studio language: r layout: base -name: Static Image Export +name: Using Chart Studio to Export Static Images order: 2 output: html_document: @@ -15,6 +15,8 @@ sitemap: false thumbnail: thumbnail/png-export.png --- + + ### New to Plotly? Plotly's R library is free and open source!
@@ -34,27 +36,32 @@ packageVersion('plotly') ``` ``` -## [1] '4.5.6.9000' +## [1] '4.9.1' ``` -### Supported Formats +### Supported Formats For Static Image Export + +With the `plotly` R package, you can export your charts as static images in the `.png` and `.jpg/.jpeg` file formats. -The common image formats: 'PNG', 'JPG/JPEG' are supported. In addition, formats like 'EPS', 'SVG' and 'PDF' are also available for user with a Personal or Professional subscription. You can get more details on our [pricing page] (https://plot.ly/products/cloud/) +Currenlty, exporting charts as static images in the `.eps`, `.svg`, and `.pdf` formats is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). -**Note:** It is important to note that any figures containing WebGL traces (i.e. of type scattergl, heatmapgl, contourgl, scatter3d, surface, mesh3d, scatterpolargl, cone, streamtube, splom, or parcoords) that are exported in a vector format like SVG, EPS or PDF will include encapsulated rasters instead of vectors for some parts of the image. +**Note:** It is important to be aware that any R charts containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, or `parcoords`) that are exported in a vector format like `.eps`, `.svg`, and `.pdf` will include encapsulated rasters instead of vectors for some parts of the image. -To access the image in a particular format, you can either: +### Supported Methods Static Image Export +To export R charts as static images with the `plotly` R package, you can: -* use the `orca()` function. [Orca](https://github.com/plotly/orca) is Plotly's command line applications for generating static images. +* use the built-in integration with [Orca](https://github.com/plotly/orca), Plotly's command line application for generating static images. -* export the image on plotly's servers using `plotly_IMAGE()`. +* export the image using your Chart Studio account using the `plotly_IMAGE()` fucntion. -* append the format extension to the plot url. i.e. the JPG version of the plot: https://plot.ly/~chris/1638 is available at : https://plot.ly/~chris/1638.jpg. +* append the format extension to the plot url of an existing Chart Studio plot. For example, the `.jpg` version of the plot at https://plot.ly/~chris/1638 is available at https://plot.ly/~chris/1638.jpg. The `.png` version of the plot is available at https://plot.ly/~chris/1638.png. -### Export Locally +#### Using Orca To Export Static Images Locally -`4.7.900` and above includes the `orca()` function (replacing the `export()` function), which exports images locally, but requires the processx package: +Version `4.7.900` and above of the `plotly` R package include the `orca()` function (replacing the `export()` function). + +This function exports images locally using [Orca](https://github.com/plotly/orca). In order to use Orca with the `plotly` R package, you need to install the [`processx`](https://github.com/r-lib/processx) package as well. ```r @@ -62,15 +69,20 @@ if (!require("processx")) install.packages("processx") p <- plot_ly(z = ~volcano) %>% add_surface() -orca(p, "surface-plot.png") +orca(p, "surface-plot.svg") ``` -### Export Using Your Plotly Account +#### Using Chart Studio to Export Static Images -Another option is to do image export through your plotly account. +Another option for exporting the R charts you create with the `plotly` R package is to use your Chart Studio account. -First, you will require the development version of plotly, this can be installed using `devtools::install_github("ropensci/plotly")`. In addition, if you haven't already, let the R package know about your credentials. +This requires using the development version of the `plotly` R package from GitHub. This can be installed using the [`devtools`](https://cran.r-project.org/web/packages/devtools/index.html) R package. +```r +devtools::install_github("ropensci/plotly") +``` + +In addition, if you haven't already, let the R session know about your Chart Studio authorization credentials by setting environment variables using [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv). ```r @@ -78,7 +90,7 @@ Sys.setenv("plotly_username" = "YOUR USER NAME") Sys.setenv("plotly_api_key" = "YOUR API KEY") ``` -This option will export the image on plotly's servers and write the content to a local file `"output.png"` in your working directory. +The `plotly_IMAGE()` function exports plots as static images using the Chart Studio web service. The image will be stored in a file in the working directory of your R session. ```r @@ -89,7 +101,12 @@ plotly_IMAGE(p, format = "png", out_file = "output.png") ![](https://images.plot.ly/plotly-documentation/images/output.png) -### Appending File Type to URL +#### Appending Static Image File Types to Chart Studio Plot URLs + +You can also view the static image version of any public Chart Studio graph by appending `.png` or `.jpeg` to the end of the URL for the graph. + +For example, view the static image of at . + +[Chart Studio Enterprise](https://plot.ly/online_chart_maker) users can also use this method to get static images in the `.pdf`, `.svg`, and `.eps` file formats. -You can also view the static version of any Plotly graph by appending `.png`, -`.pdf`, `.eps`, or `.svg` to the end of the URL. For example, view the static image of at . See [Using Plotly with rmarkdown/knitr](https://plot.ly/r/knitr/) for a way to embed these links in rmarkdown/knitr (Rmd) files. +See [Embedding Graphs in RMarkdown](https://plot.ly/r/embedding-graphs-in-rmarkdown/) to learn more about embedding R charts in RMarkdown (.Rmd) files. diff --git a/_posts/r/chart-studio/2015-07-30-filenames.Rmd b/_posts/r/chart-studio/2015-07-30-filenames.Rmd index b497f24fe418..0e89f178ebe0 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.Rmd +++ b/_posts/r/chart-studio/2015-07-30-filenames.Rmd @@ -1,9 +1,9 @@ --- -description: R Filenames, folders, and updating Plotly graphs in the plotly cloud. +description: How to update graphs stored Chart Studio with R. display_as: chart_studio language: r layout: base -name: Updating Plotly Graphs +name: Updating Graphs Stored In Chart Studio order: 1 output: html_document: @@ -34,28 +34,36 @@ library(plotly) packageVersion('plotly') ``` -#### Save Plot to Server -To create a plotly figure on a plotly server, use `api_create()`. +### Save R Plot To Chart Studio + +Using the `plotly` R package, you can create a Chart Studio figure based on your R chart. Simply pass your chart as a parameter to the `api_create()` function: ```{r} library(plotly) -p <- plot_ly(x = c(1, 2), y = c(1, 2)) +p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length) api_create(p) ``` -#### Overwrite Plot +### How To Overwrite An Existing Plot + +By default, when you call `api_create()` a new plot is created in your Chart Studio account with its own new URL. -If you don't include a filename, a new plot will be made on your online plotly account. If you want to overwrite a plot (i.e., keep the graph served from the same plotly URL), specify a filename. This implicitly overwrites your plotly graph. +If you would like to overwrite an existing plot in your Chart Studio account and keep the same URL, then supply a `filename` as an extra parameter to the `api_create()` function. This will keep the same URL for the plot. ```{r} api_create(p, filename = "name-of-my-plotly-file") ``` -#### Save your Plot in a Folder -If the filename contains "/", it will automatically create a plotly folder. This option is only available for [Pro-Subscriptions](https://plot.ly/products/cloud/) +### Saving Plots In Folders + +If the `filename` parameter contains the character "/", then the `api_create()` function will save that plot in a folder in your Chart Studio account. + +This option is only available for [Chart Studio Enterprise subscripbers](https://plot.ly/online-chart-maker/) ```{r} -api_create(p, filename="r-docs-name-of-my-plotly-file") +api_create(p, filename="r-docs/name-of-my-chart-studio-file") ``` -View your Plotly graphs at [https://plot.ly/organize](https://plot.ly/organize). +### Viewing Saved Plots + +View the R graphs you have saved in your Chart Studio account at [https://plot.ly/organize](https://plot.ly/organize). \ No newline at end of file diff --git a/_posts/r/chart-studio/2015-07-30-filenames.md b/_posts/r/chart-studio/2015-07-30-filenames.md index fe309d75e436..8bc8234792af 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.md +++ b/_posts/r/chart-studio/2015-07-30-filenames.md @@ -1,9 +1,9 @@ --- -description: R Filenames, folders, and updating Plotly graphs in the plotly cloud. +description: How to update graphs stored Chart Studio with R. display_as: chart_studio language: r layout: base -name: Updating Plotly Graphs +name: Updating Graphs Stored In Chart Studio order: 1 output: html_document: @@ -13,6 +13,7 @@ permalink: r/file-options/ thumbnail: thumbnail/horizontal-bar.jpg --- + ### New to Plotly? Plotly's R library is free and open source!
@@ -31,24 +32,27 @@ packageVersion('plotly') ``` ``` -## [1] '4.7.1' +## [1] '4.9.1' ``` -#### Save Plot to Server -To create a plotly figure on a plotly server, use `api_create()`. +### Save R Plot To Chart Studio + +Using the `plotly` R package, you can create a Chart Studio figure based on your R chart. Simply pass your chart as a parameter to the `api_create()` function: ```r library(plotly) -p <- plot_ly(x = c(1, 2), y = c(1, 2)) +p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length) api_create(p) ``` - + + +### How To Overwrite An Existing Plot -#### Overwrite Plot +By default, when you call `api_create()` a new plot is created in your Chart Studio account with its own new URL. -If you don't include a filename, a new plot will be made on your online plotly account. If you want to overwrite a plot (i.e., keep the graph served from the same plotly URL), specify a filename. This implicitly overwrites your plotly graph. +If you would like to overwrite an existing plot in your Chart Studio account and keep the same URL, then supply a `filename` as an extra parameter to the `api_create()` function. This will keep the same URL for the plot. ```r @@ -57,14 +61,19 @@ api_create(p, filename = "name-of-my-plotly-file") -#### Save your Plot in a Folder -If the filename contains "/", it will automatically create a plotly folder. This option is only available for [Pro-Subscriptions](https://plot.ly/products/cloud/) +### Saving Plots In Folders + +If the `filename` parameter contains the character "/", then the `api_create()` function will save that plot in a folder in your Chart Studio account. + +This option is only available for [Chart Studio Enterprise subscripbers](https://plot.ly/online-chart-maker/) ```r -api_create(p, filename="r-docs-name-of-my-plotly-file") +api_create(p, filename="r-docs/name-of-my-chart-studio-file") ``` - + + +### Viewing Saved Plots -View your Plotly graphs at [https://plot.ly/organize](https://plot.ly/organize). +View the R graphs you have saved in your Chart Studio account at [https://plot.ly/organize](https://plot.ly/organize). diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.Rmd b/_posts/r/chart-studio/2015-07-30-get-requests.Rmd index 125700d02e6a..ca43727fed0b 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.Rmd +++ b/_posts/r/chart-studio/2015-07-30-get-requests.Rmd @@ -1,15 +1,17 @@ --- -description: How to download plotly users's public graphs and data with R. +description: How to download Chart Studio users' public graphs and data into R. display_as: chart_studio language: r layout: base -name: Get Requests +name: Working With Chart Studio Graphs order: 6 output: html_document: keep_md: true -permalink: r/get-requests/ -thumbnail: thumbnail/get-requests.jpg +permalink: r/working-with-chart-studio-graphs/ +redirect_from: +- r/get-requests/ +thumbnail: thumbnail/hover.jpg --- ```{r, echo = FALSE, message=FALSE} @@ -33,44 +35,38 @@ library(plotly) packageVersion('plotly') ``` -### Download Plotly Graphs into R +### Download Chart Studio Graphs Into R Sessions -Download Plotly figures directly into R with `api_download_plot()`. This takes the `plot_id` and the `username` as arguments. +Download Chart Studio figures directly into your R session with the `api_download_plot()` function. This takes the `plot_id` of the Chart Studio plot and the `username` of the plot's creator as arguments. For example, to download [https://plot.ly/~cpsievert/559](https://plot.ly/~cpsievert/559) into R, call: -```{r, results = 'hide'} +```{r} library(plotly) fig <- api_download_plot("559", "cpsievert") +fig ``` -```{r, echo=FALSE} -api_create(fig, filename="getRequests-download") -``` +### Update The Layout on A Downloaded Graph -### Edit Downloaded Graph -Once the figure is downloaded, you can edit it like any plotly object. This will create a new figure unless you specify the same filename as the figure that you downloaded. +Once the figure is downloaded from Chart Studio into your R session, you can update its layout just like you would any other figure you create with the `plotly` R package. -```{r, results = 'hide'} -p <- layout(fig, title = paste("Modified on ", Sys.time())) -``` +**Note:** If you were to re-upload this figure to Chart Studio, a new figure would be created unless you specify the same `filename` as the figure that you downloaded. In that case, the existing figure will be overwritten. -```{r, echo=FALSE} -api_create(p, filename="getRequests-modify") +```{r} +p <- layout(fig, title = paste("Modified on ", Sys.time())) +p ``` -### Adding a trace to a subplot figure +### Adding a Trace to a Subplot Figure -```{r, results = 'hide'} +```{r} fig <- api_download_plot("6343", "chelsea_lyn") p <- add_lines(fig, x = c(1, 2), y = c(1, 2), xaxis = "x2", yaxis = "y2") -``` - -```{r, echo=FALSE} -api_create(p, filename="getRequests-subplot") +p ``` ### Reference -See `help("api")` +See the documentation for [getting started with Chart Studio in R](https://plot.ly/r/getting-started-with-chart-studio). \ No newline at end of file diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.md b/_posts/r/chart-studio/2015-07-30-get-requests.md index 6368505a467a..7b01a7e182c1 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.md +++ b/_posts/r/chart-studio/2015-07-30-get-requests.md @@ -1,17 +1,20 @@ --- -description: How to download plotly users's public graphs and data with R. +description: How to download Chart Studio users' public graphs and data into R. display_as: chart_studio language: r layout: base -name: Get Requests +name: Working With Chart Studio Graphs order: 6 output: html_document: keep_md: true -permalink: r/get-requests/ -thumbnail: thumbnail/tick-formatting.gif +permalink: r/working-with-chart-studio-graphs/ +redirect_from: +- r/get-requests/ +thumbnail: thumbnail/hover.jpg --- + ### New to Plotly? Plotly's R library is free and open source!
@@ -30,12 +33,12 @@ packageVersion('plotly') ``` ``` -## [1] '4.7.0.9000' +## [1] '4.9.1' ``` -### Download Plotly Graphs into R +### Download Chart Studio Graphs Into R Sessions -Download Plotly figures directly into R with `api_download_plot()`. This takes the `plot_id` and the `username` as arguments. +Download Chart Studio figures directly into your R session with the `api_download_plot()` function. This takes the `plot_id` of the Chart Studio plot and the `username` of the plot's creator as arguments. For example, to download [https://plot.ly/~cpsievert/559](https://plot.ly/~cpsievert/559) into R, call: @@ -43,31 +46,40 @@ For example, to download [https://plot.ly/~cpsievert/559](https://plot.ly/~cpsie ```r library(plotly) fig <- api_download_plot("559", "cpsievert") +fig ``` - +
+ + +### Update The Layout on A Downloaded Graph + +Once the figure is downloaded from Chart Studio into your R session, you can update its layout just like you would any other figure you create with the `plotly` R package. -### Edit Downloaded Graph -Once the figure is downloaded, you can edit it like any plotly object. This will create a new figure unless you specify the same filename as the figure that you downloaded. +**Note:** If you were to re-upload this figure to Chart Studio, a new figure would be created unless you specify the same `filename` as the figure that you downloaded. In that case, the existing figure will be overwritten. ```r p <- layout(fig, title = paste("Modified on ", Sys.time())) +p ``` - +
+ -### Adding a trace to a subplot figure +### Adding a Trace to a Subplot Figure ```r fig <- api_download_plot("6343", "chelsea_lyn") p <- add_lines(fig, x = c(1, 2), y = c(1, 2), xaxis = "x2", yaxis = "y2") +p ``` - +
+ ### Reference -See `help("api")` +See the documentation for [getting started with Chart Studio in R](https://plot.ly/r/getting-started-with-chart-studio). diff --git a/_posts/r/chart-studio/2015-07-30-privacy.Rmd b/_posts/r/chart-studio/2015-07-30-privacy.Rmd index 087417bf9888..c83b7f447481 100644 --- a/_posts/r/chart-studio/2015-07-30-privacy.Rmd +++ b/_posts/r/chart-studio/2015-07-30-privacy.Rmd @@ -1,10 +1,10 @@ --- -description: How to set the privacy settings of plotly graphs in R. +description: How to set the privacy settings of Chart Studio graphs in R. display_as: chart_studio language: r layout: base -name: Public vs Private Graphs -order: 7 +name: Privacy Settings For Chart Studio Graphs +order: 8 output: html_document: keep_md: true @@ -17,6 +17,7 @@ knitr::opts_chunk$set(message = FALSE, warning = FALSE) Sys.setenv("plotly_username"="RPlotBot") Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` + ### New to Plotly? Plotly's R library is free and open source!
@@ -33,49 +34,42 @@ packageVersion('plotly') ``` #### Default Privacy -Plotly for R renders entirely locally by default, but you can also publish these graphs to the web via the `api_create()` function. By default, `api_create()` creates public graphs (which are free to create), but with a [plotly subscription](https://plot.ly/products/cloud/) you can easily make them private via the `sharing` argument. +The `plotly` R package renders plots entirely **locally** by default. + +However, you can also choose to publish plots on the web using Chart Studio via the `api_create()` function. + +By default, the `api_create()` function creates public graphs. With a [Chart Studio Enterprise subscription](https://plot.ly/online-chart-maker/), you can easily make graphs private by using the `sharing` argument of the `api_create()` function. ### Public Graph + Please note, this is the default privacy option. -```{r, results = 'hide'} +```{r} library(plotly) p <- plot_ly(x = c(0, 2, 4), y = c(0, 4, 2), type = 'scatter', mode = 'markers+lines') chart_link = api_create(p, filename = "public-graph") chart_link ``` -```{r, echo=FALSE} -chart_link -``` - Below is the URL of this public plot. Anyone can view public plots even if they are not logged into Plotly.
Try it out: [https://plot.ly/~RPlotBot/4545](https://plot.ly/~RPlotBot/4545) ### Private Graph -```{r, results = 'hide'} +```{r} library(plotly) p <- plot_ly(x = c(0, 2, 4), y = c(0, 4, 2), type = 'scatter', mode = 'markers+lines') chart_link = api_create(p, filename = "private-graph", sharing = "private") chart_link ``` -```{r, echo=FALSE} -chart_link -``` - Below is the URL of the private plot above. Only the owner can view the private plot. You won't be able to view this plot.
Try it out: [https://plot.ly/~RPlotBot/4549/](https://plot.ly/~RPlotBot/4549/) ### Secret Graph -```{r, results = 'hide'} +```{r} library(plotly) p <- plot_ly(x = c(0, 2, 4), y = c(0, 4, 2), type = 'scatter', mode = 'markers+lines') -chart_link = api_create(p, filename = "secret-graph", sharing = "secret") -chart_link -``` - -```{r, echo=FALSE} -chart_link +secret_graph = api_create(p, filename = "secret-graph-file", sharing = "secret") +secret_graph ``` Below is the URL of this secret plot. Anyone with the secret link can view this chart. However, it will not appear in the Plotly feed, your profile, or search engines.
Try it out: -[https://plot.ly/~RPlotBot/4553/?share_key=62AMQ8YBpZebu6Y5OYsukj](https://plot.ly/~RPlotBot/4553/?share_key=62AMQ8YBpZebu6Y5OYsukj) +[https://plot.ly/~RPlotBot/4553/?share_key=62AMQ8YBpZebu6Y5OYsukj](https://plot.ly/~RPlotBot/4553/?share_key=62AMQ8YBpZebu6Y5OYsukj) \ No newline at end of file diff --git a/_posts/r/chart-studio/2015-07-30-privacy.md b/_posts/r/chart-studio/2015-07-30-privacy.md index 44311c67c0d1..96fda6933c1d 100644 --- a/_posts/r/chart-studio/2015-07-30-privacy.md +++ b/_posts/r/chart-studio/2015-07-30-privacy.md @@ -1,10 +1,10 @@ --- -description: How to set the privacy settings of plotly graphs in R. +description: How to set the privacy settings of Chart Studio graphs in R. display_as: chart_studio language: r layout: base -name: Public vs Private Graphs -order: 7 +name: Privacy Settings For Chart Studio Graphs +order: 8 output: html_document: keep_md: true @@ -12,6 +12,8 @@ permalink: r/privacy/ thumbnail: thumbnail/privacy.jpg --- + + ### New to Plotly? Plotly's R library is free and open source!
@@ -29,13 +31,18 @@ packageVersion('plotly') ``` ``` -## [1] '4.7.0' +## [1] '4.9.1' ``` #### Default Privacy -Plotly for R renders entirely locally by default, but you can also publish these graphs to the web via the `api_create()` function. By default, `api_create()` creates public graphs (which are free to create), but with a [plotly subscription](https://plot.ly/products/cloud/) you can easily make them private via the `sharing` argument. +The `plotly` R package renders plots entirely **locally** by default. + +However, you can also choose to publish plots on the web using Chart Studio via the `api_create()` function. + +By default, the `api_create()` function creates public graphs. With a [Chart Studio Enterprise subscription](https://plot.ly/online-chart-maker/), you can easily make graphs private by using the `sharing` argument of the `api_create()` function. ### Public Graph + Please note, this is the default privacy option. @@ -68,11 +75,11 @@ Below is the URL of the private plot above. Only the owner can view the private ```r library(plotly) p <- plot_ly(x = c(0, 2, 4), y = c(0, 4, 2), type = 'scatter', mode = 'markers+lines') -chart_link = api_create(p, filename = "secret-graph", sharing = "secret") -chart_link +secret_graph = api_create(p, filename = "secret-graph-file", sharing = "secret") +secret_graph ``` - + Below is the URL of this secret plot. Anyone with the secret link can view this chart. However, it will not appear in the Plotly feed, your profile, or search engines.
Try it out: [https://plot.ly/~RPlotBot/4553/?share_key=62AMQ8YBpZebu6Y5OYsukj](https://plot.ly/~RPlotBot/4553/?share_key=62AMQ8YBpZebu6Y5OYsukj) diff --git a/_posts/r/chart-studio/2015-08-10-knitr.Rmd b/_posts/r/chart-studio/2015-08-10-knitr.Rmd index a4c10f0a50ff..01809a108620 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.Rmd +++ b/_posts/r/chart-studio/2015-08-10-knitr.Rmd @@ -1,19 +1,18 @@ --- -description: How to embed Plotly graphs in Rmd files. +description: How to embed R graphs in RMarkdown files. display_as: chart_studio language: r layout: base -name: Embedding Graphs with Knitr +name: Embedding R Graphs in RMarkdown Files order: 3 output: html_document: - highlight: null keep_md: true - theme: null page_type: example_index -permalink: r/knitr/ +permalink: r/embedding-graphs-in-rmarkdown/ redirect_from: - r/embedding-plotly-graphs-in-HTML +- r/knitr/ thumbnail: thumbnail/ipythonnb.jpg --- @@ -38,36 +37,37 @@ library(plotly) packageVersion('plotly') ``` -### Embedding plotly graphs in Rmd files +### Embedding R Graphs in RMarkdown files -If you are using [rmarkdown](http://rmarkdown.rstudio.com/) with HTML output, printing a `plotly` object in a code chunk will result in an interactive HTML graph. When using rmarkdown with non-HTML output, printing a `plotly` object will result in a png screenshot of the graph. +If you are creating R charts in an [RMarkdown](http://rmarkdown.rstudio.com/) environment with HTML output (such as RStudio), simply printing a graph you created using the `plotly` R package in a code chunk will result in an interactive HTML graph in the viewer. -```{r, results = "hide"} +When using RMarkdown with non-HTML output, printing a graph you created using the `plotly` R package will result in a `.png` screenshot of the graph being generated. + +```{r} library(plotly) p <- plot_ly(economics, x = ~date, y = ~unemploy / pop) +p ``` -```{r, echo=FALSE} -api_create(p, filename='r-docs/knitr-example') -``` +Sometimes, you may want to print a _list_ of graphs in an RMarkdown document. -Sometimes, you may want to print a _list_ of plotly objects. If, for some reason, you don't want to use the [`subplot()` function](https://plot.ly/r/subplots/), you can print a list of htmlwidgets in a single code chunk using the `tagList()` function from the **htmltools** package: +If, for some reason, you don't want to use the [`subplot()` function](https://plot.ly/r/subplots/), you can render a list of `htmlwidgets` in a single code chunk using the `tagList()` function from the [`htmltools`](https://cran.r-project.org/web/packages/htmltools/index.html) package: -```{r, results = "hide"} +```{r} htmltools::tagList(list(p, p)) ``` -Another way to print multiple objects is by using a `lapply`: +Another way to print multiple graphs in an RMarkdown document with the `plotly` R package is by using the [`lapply`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/lapply) function: -```{r, results = "hide"} +```{r} library(plotly) htmltools::tagList(lapply(1:3, function(x) { plot_ly(x = rnorm(10)) })) ``` -Alternatively, you can use for loops: +Alternatively, you can use a `for` loop instead of `lapply`: -```{r, results = "hide"} +```{r} library(plotly) l <- htmltools::tagList() @@ -77,16 +77,22 @@ for (i in 1:3) { l ``` -You can also host your figures on a plotly server via `api_create()` which returns a figure object. When a figure object is printed in an rmarkdown/knitr document, it embeds the figure as an iframe, displaying the plot as it appears on your plotly account. +### Embedding Chart Studio Graphs in RMarkdown Files + +When you publish your plots to Chart Studio via the `api_create()` function, a figure object is returned to your R session. + +When a Chart Studio figure object is rendered in an RMarkdown document, it is embedded as an `iframe`, displaying the plot as it appears on your Chart Studio account. -```{r, results='hide'} +```{r, echo="FALSE", results='hide'} f <- api_create(p) class(f) f ``` -You can control the height/width of that iframe through the `height`/`width` [knitr chunk options](http://yihui.name/knitr/options/), but the figure object also contains the relevant url so you complete control over embedding your figure. The post has more details on how to [embed plotly graphs with HTML iframes](http://help.plot.ly/embed-graphs-in-websites/), but could also use plotly's built-in image export by simply adding a `.png` (or similar) extension. +You can control the height and width of that `iframe` through the `height`/`width` [knitr chunk options](http://yihui.name/knitr/options/), but the figure object also contains the relevant URL so you have complete control over embedding your figure. + +This [post](http://help.plot.ly/embed-graphs-in-websites/) has more details on how to embed Chart Studio graphs within HTML `iframes`, but you could also use Chart Studio's built-in image export by simply adding a `.png` or `.jpeg` file extension to the end of the figure's URL. ```{r} htmltools::tags$img(src = paste0(f[["url"]], ".png")) -``` +``` \ No newline at end of file diff --git a/_posts/r/chart-studio/2015-08-10-knitr.md b/_posts/r/chart-studio/2015-08-10-knitr.md index 6980f349e8c0..0027d5607194 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.md +++ b/_posts/r/chart-studio/2015-08-10-knitr.md @@ -1,22 +1,22 @@ --- -description: How to embed Plotly graphs in Rmd files. +description: How to embed R graphs in RMarkdown files. display_as: chart_studio language: r layout: base -name: Embedding Graphs with Knitr +name: Embedding R Graphs in RMarkdown Files order: 3 output: html_document: - highlight: null keep_md: true - theme: null page_type: example_index -permalink: r/knitr/ +permalink: r/embedding-graphs-in-rmarkdown/ redirect_from: - r/embedding-plotly-graphs-in-HTML +- r/knitr/ thumbnail: thumbnail/ipythonnb.jpg --- + ### New to Plotly? Plotly's R library is free and open source!
@@ -35,29 +35,40 @@ packageVersion('plotly') ``` ``` -## [1] '4.5.6.9000' +## [1] '4.9.1' ``` -### Embedding plotly graphs in Rmd files +### Embedding R Graphs in RMarkdown files + +If you are creating R charts in an [RMarkdown](http://rmarkdown.rstudio.com/) environment with HTML output (such as RStudio), simply printing a graph you created using the `plotly` R package in a code chunk will result in an interactive HTML graph in the viewer. -If you are using [rmarkdown](http://rmarkdown.rstudio.com/) with HTML output, printing a `plotly` object in a code chunk will result in an interactive HTML graph. When using rmarkdown with non-HTML output, printing a `plotly` object will result in a png screenshot of the graph. +When using RMarkdown with non-HTML output, printing a graph you created using the `plotly` R package will result in a `.png` screenshot of the graph being generated. ```r library(plotly) p <- plot_ly(economics, x = ~date, y = ~unemploy / pop) +p ``` - +
+ + +Sometimes, you may want to print a _list_ of graphs in an RMarkdown document. -Sometimes, you may want to print a _list_ of plotly objects. If, for some reason, you don't want to use the [`subplot()` function](https://plot.ly/r/subplots/), you can print a list of htmlwidgets in a single code chunk using the `tagList()` function from the **htmltools** package: +If, for some reason, you don't want to use the [`subplot()` function](https://plot.ly/r/subplots/), you can render a list of `htmlwidgets` in a single code chunk using the `tagList()` function from the [`htmltools`](https://cran.r-project.org/web/packages/htmltools/index.html) package: ```r htmltools::tagList(list(p, p)) ``` -Another way to print multiple objects is by using a `lapply`: +
+ +
+ + +Another way to print multiple graphs in an RMarkdown document with the `plotly` R package is by using the [`lapply`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/lapply) function: ```r @@ -66,7 +77,14 @@ library(plotly) htmltools::tagList(lapply(1:3, function(x) { plot_ly(x = rnorm(10)) })) ``` -Alternatively, you can use for loops: +
+ +
+ +
+ + +Alternatively, you can use a `for` loop instead of `lapply`: ```r @@ -79,7 +97,18 @@ for (i in 1:3) { l ``` -You can also host your figures on a plotly server via `api_create()` which returns a figure object. When a figure object is printed in an rmarkdown/knitr document, it embeds the figure as an iframe, displaying the plot as it appears on your plotly account. +
+ +
+ +
+ + +### Embedding Chart Studio Graphs in RMarkdown Files + +When you publish your plots to Chart Studio via the `api_create()` function, a figure object is returned to your R session. + +When a Chart Studio figure object is rendered in an RMarkdown document, it is embedded as an `iframe`, displaying the plot as it appears on your Chart Studio account. ```r @@ -88,11 +117,13 @@ class(f) f ``` -You can control the height/width of that iframe through the `height`/`width` [knitr chunk options](http://yihui.name/knitr/options/), but the figure object also contains the relevant url so you complete control over embedding your figure. The post has more details on how to [embed plotly graphs with HTML iframes](http://help.plot.ly/embed-graphs-in-websites/), but could also use plotly's built-in image export by simply adding a `.png` (or similar) extension. +You can control the height and width of that `iframe` through the `height`/`width` [knitr chunk options](http://yihui.name/knitr/options/), but the figure object also contains the relevant URL so you have complete control over embedding your figure. + +This [post](http://help.plot.ly/embed-graphs-in-websites/) has more details on how to embed Chart Studio graphs within HTML `iframes`, but you could also use Chart Studio's built-in image export by simply adding a `.png` or `.jpeg` file extension to the end of the figure's URL. ```r htmltools::tags$img(src = paste0(f[["url"]], ".png")) ``` - + diff --git a/_posts/r/chart-studio/2015-08-10-plotly-offline.html b/_posts/r/chart-studio/2015-08-10-plotly-offline.html index e7d44141fbb5..a08b0b4d27b3 100644 --- a/_posts/r/chart-studio/2015-08-10-plotly-offline.html +++ b/_posts/r/chart-studio/2015-08-10-plotly-offline.html @@ -1,60 +1,5 @@ --- permalink: r/offline/ -description: Plotly offline using the Plotly R client, Shiny and RStudio -name: Using Plotly Offline -thumbnail: /images/static-image -layout: base -page_type: u-guide -language: r ---- -{% raw %} -
-
-
-
-
- - -
- -
    -
  • Plotly R figures appear interactively within RStudio's graphics viewer without any calls to Plotly's server by default. This means that all plots generated in RStudio are offline. You will have to make a api_create call in order to upload your plot onto the Chart Studio Cloud.
  • -
- -
    -
  • Plotly graphics in RStudio sit on top of the HTML widgets framework and use the open source javascript graphing library plotly.js.
  • -
- -
-
-

Getting the HTML for a Plotly Graph

-

You could treat the viewer in RStudio as an embedded web browser. Thus it's possible to view the source of that page. What you have to do is - click the export button in the viewer, and choose Save as Web Page. - You will then be prompted to save the web page. Then you will be able to view the source code when viewing the plot.

- -
-

- An alternative method in which to get the html for your plot is to call the following command: -
htmlwidgets::saveWidget(as.widget(p), "graph.html"), where p will be your plot figure. - Note that you could name the html file to anything you choose. -

-
-
-

Working with Shiny

-

With Shiny and Plotly you can now make data visualization interactive. What Shiny allows you to do is affect the state of your plots - via widgets provided by the Shiny package or even custom widgets you write in HTML yourself. What this means is that you can interact - with both the styling of the plots, as well as the data that's being plotted. Thus you can do things like filter date on the fly and have - your plot reflect these changes. To get started, visit: https://plot.ly/r/shiny-tutorial/, and for a collection of examples, - checkout: https://plot.ly/r/shiny-gallery

- -
-
-
-
-
- -{% endraw %} +redirect_to: r/getting-started +sitemap: false +--- \ No newline at end of file diff --git a/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html b/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html index 1619b2efc1bd..6529f72b93ce 100644 --- a/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html +++ b/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html @@ -1,9 +1,9 @@ --- -description: How to embed Plotly charts in Jupyter notebooks using R +description: How to embed R graphs in Jupyter notebeooks. display_as: chart_studio language: r layout: base -name: Plotly Charts in Jupyter notebooks using R +name: Embed Graphs In Jupyter Notebooks order: 4 page_type: u-guide permalink: r/using-r-in-jupyter-notebooks/ diff --git a/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd b/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd index 3d6d9bd66f1c..213d52232f81 100644 --- a/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd +++ b/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd @@ -1,11 +1,11 @@ --- -name: Configuration Options +name: Configuration Options For Embedded Chart Studio Graphs permalink: r/configuration-options/ -description: How to set configuration options of plotly graphs in python. Examples of both online and offline configurations. +description: How to set configuration options of embedded Chart Studio graphs in R. Examples of both online and offline configurations. layout: base language: r thumbnail: thumbnail/modebar-icons.png -display_as: fundamentals +display_as: chart_studio order: 7 output: html_document: @@ -14,8 +14,6 @@ output: ```{r, echo = FALSE, message=FALSE} knitr::opts_chunk$set(message = FALSE, warning=FALSE) -Sys.setenv("plotly_username"="RPlotBot") -Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` ### New to Plotly? @@ -35,7 +33,11 @@ packageVersion('plotly') #### Online Configuration Options -Config options set via our API libraries are overridden on graphs hosted on plot.ly (i.e. when working online). To set configutation options online, you can edit the plot's embed url. Visit our embed tutorial: [click here](http://help.plot.ly/embed-graphs-in-websites/#step-8-customize-the-iframe) for more information on customizing the embed url to remove the "Edit Chart" link, hide the modebar, or autosize the plot. +Configuration options for graphs created with the `plotly` R package are overridden when those graphs are published to Chart Studio using the `api_create()` function. + +To set configutation options for charts published to Chart STudio, you can edit the plot's embed url. + +Visit our [embed tutorial](http://help.plot.ly/embed-graphs-in-websites/#step-8-customize-the-iframe) for more information on customizing the embed URL to remove the "Edit Chart" link, hide the modebar, or autosize the plot. #### Offline Configuration Options @@ -47,11 +49,6 @@ p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length) htmlwidgets::saveWidget(config(p, showLink = T), "graph.html") ``` -Remove the 'collaborate mode bar button': -```{r, results = 'hide'} -htmlwidgets::saveWidget(config(p, collaborate = FALSE), "graph.html") -``` - Remove the 'mode bar': ```{r, results = 'hide'} htmlwidgets::saveWidget(config(p, displayModeBar = FALSE), "graph.html") @@ -59,6 +56,6 @@ htmlwidgets::saveWidget(config(p, displayModeBar = FALSE), "graph.html") #### Reference Arguments are documented [here](https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js). -```{r, results = 'hide'} +```r ?config ``` \ No newline at end of file diff --git a/_posts/r/chart-studio/2017-07-17-configuration-options.md b/_posts/r/chart-studio/2017-07-17-configuration-options.md index 85d20bfe60fc..b3d1ef7bcade 100644 --- a/_posts/r/chart-studio/2017-07-17-configuration-options.md +++ b/_posts/r/chart-studio/2017-07-17-configuration-options.md @@ -1,11 +1,11 @@ --- -name: Configuration Options +name: Configuration Options For Embedded Chart Studio Graphs permalink: r/configuration-options/ -description: How to set configuration options of plotly graphs in python. Examples of both online and offline configurations. +description: How to set configuration options of embedded Chart Studio graphs in R. Examples of both online and offline configurations. layout: base language: r thumbnail: thumbnail/modebar-icons.png -display_as: fundamentals +display_as: chart_studio order: 7 output: html_document: @@ -31,12 +31,16 @@ packageVersion('plotly') ``` ``` -## [1] '4.7.0.9000' +## [1] '4.9.1' ``` #### Online Configuration Options -Config options set via our API libraries are overridden on graphs hosted on plot.ly (i.e. when working online). To set configutation options online, you can edit the plot's embed url. Visit our embed tutorial: [click here](http://help.plot.ly/embed-graphs-in-websites/#step-8-customize-the-iframe) for more information on customizing the embed url to remove the "Edit Chart" link, hide the modebar, or autosize the plot. +Configuration options for graphs created with the `plotly` R package are overridden when those graphs are published to Chart Studio using the `api_create()` function. + +To set configutation options for charts published to Chart STudio, you can edit the plot's embed url. + +Visit our [embed tutorial](http://help.plot.ly/embed-graphs-in-websites/#step-8-customize-the-iframe) for more information on customizing the embed URL to remove the "Edit Chart" link, hide the modebar, or autosize the plot. #### Offline Configuration Options @@ -49,12 +53,6 @@ p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length) htmlwidgets::saveWidget(config(p, showLink = T), "graph.html") ``` -Remove the 'collaborate mode bar button': - -```r -htmlwidgets::saveWidget(config(p, collaborate = FALSE), "graph.html") -``` - Remove the 'mode bar': ```r @@ -63,7 +61,6 @@ htmlwidgets::saveWidget(config(p, displayModeBar = FALSE), "graph.html") #### Reference Arguments are documented [here](https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js). - ```r ?config ``` diff --git a/_posts/r/chart-studio/2019-12-18-chart-studio-index.html b/_posts/r/chart-studio/2019-12-18-chart-studio-index.html index d2ad7c64f52a..78ab09ad8902 100644 --- a/_posts/r/chart-studio/2019-12-18-chart-studio-index.html +++ b/_posts/r/chart-studio/2019-12-18-chart-studio-index.html @@ -7,7 +7,7 @@ display_as: chart_studio thumbnail: thumbnail/mixed.jpg page_type: example_index -order: 20 +order: 5 --- diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd new file mode 100644 index 000000000000..23c9ad9d903a --- /dev/null +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd @@ -0,0 +1,121 @@ +--- +name: Getting Started with Chart Studio +permalink: r/getting-started-with-chart-studio/ +description: Get started with Chart Studio and Plotly's R graphing library. +page_type: u-guide +display_as: chart_studio +layout: base +language: r +thumbnail: thumbnail/bubble.jpg +order: 9 +output: + html_document: + keep_md: true +--- + +```{r, echo = FALSE, message=FALSE} +knitr::opts_chunk$set(message = FALSE, warning=FALSE) +``` + +# Getting Started with Chart Studio and the `plotly` R Package + +`plotly` is an R package for creating interactive web-based graphs via the open source JavaScript graphing library [plotly.js](http://plot.ly/javascript). + +As of version 2.0 (November 17, 2015), R graphs created with the `plotly` R package are rendered *locally* through the [htmlwidgets](http://www.htmlwidgets.org/) framework. + +## Initialization for Online Plotting + +You can choose to publish charts you create with the `plotly` R package to the web using [Chart Studio](https://plot.ly/online-chart-maker). In order to do so, follow these steps: + +1 - [Create a free Chart Studio account](https://plot.ly/api_signup):
+A Chart Studio account is required to publish R charts to the web using Chart Studio. It's free to get started, and you control the privacy of your charts. + +2 - Store your Chart Studio authentication credentials as environment variables in your R session
+Your Chart Studio authentication credentials consist of your Chart Studio username and your Chart Studio API key, which can be found [in your online settings](https://plot.ly/settings/api). + +Use the [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv) function to set these credentials as environment variables in your R session. + +```r +Sys.setenv("plotly_username"="your_plotly_username") +Sys.setenv("plotly_api_key"="your_api_key") +``` + +Save these commands in your [.Rprofile](http://www.statmethods.net/interface/customizing.html) file if you want them to be run every time you start a new R session. + +3 - Use the `api_create()` function to publish R charts to Chart Studio: + +Use the `filename` attribute to set the title of the file that will be generated in your Chart Studio account. + +```r +library(plotly) +p <- plot_ly(midwest, x = ~percollege, color = ~state, type = "box") +api_create(p, filename = "r-docs-midwest-boxplots") +``` + +4 (optional) - Suppress auto open behavior: + +When following the instructions above, executing `api_create(p)` will auto open the created Chart Studio URL in the browser. To suppress this behavior, set the `browser` option to `false` in your R session. + +```r +options(browser = 'false') +api_create(p, filename = "r-docs-midwest-boxplots") +``` + +## Special Instructions for Chart Studio Enterprise Users + +### Where To Find Your API Key + +Your API key for your free Chart Studio account will be different than the API key for your [Chart Studio Enterprise](https://plot.ly/product/enterprise/) account. + +Visit to find your Chart Studio Enterprise account API key. + +Remember to replace "your-company.com" with the URL of your company's Chart Studio Enterprise server. + +### Set the `plotly_domain` environment variable + +The URL that the `plotly` package uses to communicate with Chart Studio will be different if your company has a Chart Studio Enterprise server. In order to make your R session aware of the new URL, set the `plotly_domain` environment variable equal to the URL of your Chart Studio Enterprise server using the `Sys.setenv()` function. + +Save the following command in your [.Rprofile](http://www.statmethods.net/interface/customizing.html) so that it runs every time you start a new R session: + +```r +Sys.setenv("plotly_domain"="https://plotly.your-company.com") +``` + +Remember to replace "your-company" with the URL of your company's Chart Studio Enterprise server. + +## Chart Studio Plot Privacy Modes + +Chart Studio plots can be set to three different type of privacy modes: `public`, `private`, or `secret`. + +* **public:** + + Anyone can view this graph. + It will appear in your Chart Studio profile and can be indexed by search engines. + Being logged in to a Chart Studio account is not required to view this chart. + +* **private:** + + Only you can view this plot. + It will not appear in the public Chart Studio feed, your Chart Studio profile, or be indexed by search engines. + Being logged into your Chart Studio account is required to view this graph. + You can privately share this graph with other Chart Studio users. They will also need to be logged in to their Chart Studio account to view this plot. + This option is only available to Chart Studio Enterprise subscribers. + +* **secret:** + + Anyone with this secret link can view this chart. + It will not appear in the public Chart Studio feed, your Chart Studio profile, or be indexed by search engines. + If it is embedded inside a webpage or an IPython notebook, anybody who is viewing that page will be able to view the graph. + You do not need to be logged in to your Chart Studio account view this plot. + This option is only available to Chart Studio Enterprise subscribers. + +By default all Chart Studio plots you create with the `plotly` R package are set to `public`. Users with free Chart Studio accounts are limited to creating `public` plots. + +If you have private storage needs, please learn more about [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). + +If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscription/?modal=true&utm_source=api-docs&utm_medium=support-oss) and would like the setting for your plots to be private, you can specify sharing as private: + +```r +api_create(filename = "private-graph", sharing = "private") +``` +For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) \ No newline at end of file diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md new file mode 100644 index 000000000000..e138061e9879 --- /dev/null +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md @@ -0,0 +1,116 @@ +--- +name: Getting Started with Chart Studio +permalink: r/getting-started-with-chart-studio/ +description: Get started with Chart Studio and Plotly's R graphing library. +page_type: example_index +thumbnail: thumbnail/bubble.jpg +display_as: chart_studio +layout: base +language: r +output: + html_document: + keep_md: true +--- + +# Getting Started with Chart Studio and the `plotly` R Package + +`plotly` is an R package for creating interactive web-based graphs via the open source JavaScript graphing library [plotly.js](http://plot.ly/javascript). + +As of version 2.0 (November 17, 2015), R graphs created with the `plotly` R package are rendered *locally* through the [htmlwidgets](http://www.htmlwidgets.org/) framework. + +## Initialization for Online Plotting + +You can choose to publish charts you create with the `plotly` R package to the web using [Chart Studio](https://plot.ly/online-chart-maker). In order to do so, follow these steps: + +1 - [Create a free Chart Studio account](https://plot.ly/api_signup):
+A Chart Studio account is required to publish R charts to the web using Chart Studio. It's free to get started, and you control the privacy of your charts. + +2 - Store your Chart Studio authentication credentials as environment variables in your R session
+Your Chart Studio authentication credentials consist of your Chart Studio username and your Chart Studio API key, which can be found [in your online settings](https://plot.ly/settings/api). + +Use the [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv) function to set these credentials as environment variables in your R session. + +```r +Sys.setenv("plotly_username"="your_plotly_username") +Sys.setenv("plotly_api_key"="your_api_key") +``` + +Save these commands in your [.Rprofile](http://www.statmethods.net/interface/customizing.html) file if you want them to be run every time you start a new R session. + +3 - Use the `api_create()` function to publish R charts to Chart Studio: + +Use the `filename` attribute to set the title of the file that will be generated in your Chart Studio account. + +```r +library(plotly) +p <- plot_ly(midwest, x = ~percollege, color = ~state, type = "box") +api_create(p, filename = "r-docs-midwest-boxplots") +``` + +4 (optional) - Suppress auto open behavior: + +When following the instructions above, executing `api_create(p)` will auto open the created Chart Studio URL in the browser. To suppress this behavior, set the `browser` option to `false` in your R session. + +```r +options(browser = 'false') +api_create(p, filename = "r-docs-midwest-boxplots") +``` + +## Special Instructions for Chart Studio Enterprise Users + +### Where To Find Your API Key + +Your API key for your free Chart Studio account will be different than the API key for your [Chart Studio Enterprise](https://plot.ly/product/enterprise/) account. + +Visit to find your Chart Studio Enterprise account API key. + +Remember to replace "your-company.com" with the URL of your company's Chart Studio Enterprise server. + +### Set the `plotly_domain` environment variable + +The URL that the `plotly` package uses to communicate with Chart Studio will be different if your company has a Chart Studio Enterprise server. In order to make your R session aware of the new URL, set the `plotly_domain` environment variable equal to the URL of your Chart Studio Enterprise server using the `Sys.setenv()` function. + +Save the following command in your [.Rprofile](http://www.statmethods.net/interface/customizing.html) so that it runs every time you start a new R session: + +```r +Sys.setenv("plotly_domain"="https://plotly.your-company.com") +``` + +Remember to replace "your-company" with the URL of your company's Chart Studio Enterprise server. + +## Chart Studio Plot Privacy Modes + +Chart Studio plots can be set to three different type of privacy modes: `public`, `private`, or `secret`. + +* **public:** + + Anyone can view this graph. + It will appear in your Chart Studio profile and can be indexed by search engines. + Being logged in to a Chart Studio account is not required to view this chart. + +* **private:** + + Only you can view this plot. + It will not appear in the public Chart Studio feed, your Chart Studio profile, or be indexed by search engines. + Being logged into your Chart Studio account is required to view this graph. + You can privately share this graph with other Chart Studio users. They will also need to be logged in to their Chart Studio account to view this plot. + This option is only available to Chart Studio Enterprise subscribers. + +* **secret:** + + Anyone with this secret link can view this chart. + It will not appear in the public Chart Studio feed, your Chart Studio profile, or be indexed by search engines. + If it is embedded inside a webpage or an IPython notebook, anybody who is viewing that page will be able to view the graph. + You do not need to be logged in to your Chart Studio account view this plot. + This option is only available to Chart Studio Enterprise subscribers. + +By default all Chart Studio plots you create with the `plotly` R package are set to `public`. Users with free Chart Studio accounts are limited to creating `public` plots. + +If you have private storage needs, please learn more about [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). + +If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscription/?modal=true&utm_source=api-docs&utm_medium=support-oss) and would like the setting for your plots to be private, you can specify sharing as private: + +```r +api_create(filename = "private-graph", sharing = "private") +``` +For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) diff --git a/_posts/r/chart-studio/sending-data/2015-04-09-sending-data_index.html b/_posts/r/chart-studio/sending-data/2015-04-09-sending-data_index.html index 427932e4f055..8433a60f3719 100644 --- a/_posts/r/chart-studio/sending-data/2015-04-09-sending-data_index.html +++ b/_posts/r/chart-studio/sending-data/2015-04-09-sending-data_index.html @@ -4,7 +4,7 @@ display_as: chart_studio language: r layout: base -name: Sending Data to Charts +name: Sending Data to Chart Studio Graphs order: 8 permalink: r/sending-data-to-charts/ thumbnail: thumbnail/ff-subplots.jpg From 3995f1df9fc61fd5e116ad43eb7ed11b2f45b5c2 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Mon, 20 Jan 2020 11:59:18 -0500 Subject: [PATCH 02/30] Update _posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd Co-Authored-By: Nicolas Kruchten --- _posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd index be31fa896a94..180ca6cf50c1 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd @@ -42,7 +42,7 @@ packageVersion('plotly') With the `plotly` R package, you can export your charts as static images in the `.png` and `.jpg/.jpeg` file formats. -Currenlty, exporting charts as static images in the `.eps`, `.svg`, and `.pdf` formats is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). +Currently, exporting charts as static images in the `.eps`, `.svg`, and `.pdf` formats is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). **Note:** It is important to be aware that any R charts containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, or `parcoords`) that are exported in a vector format like `.eps`, `.svg`, and `.pdf` will include encapsulated rasters instead of vectors for some parts of the image. @@ -105,4 +105,4 @@ For example, view the static image of at Date: Mon, 20 Jan 2020 13:10:08 -0500 Subject: [PATCH 03/30] split orca content into its own doc --- .../2015-04-09-static-image_r_index.Rmd | 62 +++++++---------- .../2015-04-09-static-image_r_index.md | 63 +++++++----------- ...1-17-getting-started-with-chart-studio.Rmd | 13 +++- ...01-17-getting-started-with-chart-studio.md | 18 ++++- _posts/r/chart-studio/output.png | Bin 35311 -> 43208 bytes 5 files changed, 76 insertions(+), 80 deletions(-) diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd index 180ca6cf50c1..e26e581a9693 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd @@ -1,16 +1,16 @@ --- -description: How to export R graphs as static images. Ploty's R graphing library supports exporting to .png, - .svg, .jpg, and .pdf file formarts and exporting Chart Studio graphs. +description: How to export R graphs as static images using Chart Studio. display_as: chart_studio language: r layout: base -name: Using Chart Studio to Export Static Images +name: Exporting Graphs As Static Images Using Chart Studio order: 2 output: html_document: keep_md: true page_type: example_index -permalink: r/static-image-export/ +permalink: r/chart-studio-image-export/ +redirect_from: r/static-image-export/ sitemap: false thumbnail: thumbnail/png-export.png --- @@ -38,56 +38,42 @@ library(plotly) packageVersion('plotly') ``` -### Supported Formats For Static Image Export +### Supported File Formats -With the `plotly` R package, you can export your charts as static images in the `.png` and `.jpg/.jpeg` file formats. +With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg/.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). -Currently, exporting charts as static images in the `.eps`, `.svg`, and `.pdf` formats is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). +Currently, exporting graphs you create as static images in the `.eps`, `.svg`, and/or `.pdf` format is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). -**Note:** It is important to be aware that any R charts containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, or `parcoords`) that are exported in a vector format like `.eps`, `.svg`, and `.pdf` will include encapsulated rasters instead of vectors for some parts of the image. +**Note:** It is important to be aware that R graphs containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, and/or `parcoords`) will include encapsulated rasters instead of vectors for some parts of the image if they are exported as static images in a vector format like `.eps`, `.svg`, and/or `.pdf`. -### Supported Methods Static Image Export +### Exporting Chart Studio Charts As Static Images -To export R charts as static images with the `plotly` R package, you can: +To export your R graphs as static images using the Chart Studio web service, you can use the built-in `plotly_IMAGE()` function. -* use the built-in integration with [Orca](https://github.com/plotly/orca), Plotly's command line application for generating static images. +#### Create A Chart Studio Account And Get An API Key -* export the image using your Chart Studio account using the `plotly_IMAGE()` fucntion. +To use the `plotly_IMAGE()` function, you will need to have a [Chart Studio account](https://chart-studio.plot.ly/Auth/login/?action=signup#/) and an API key (which can be found [in your Chart Studio account online settings](https://plot.ly/settings/api)). Learn more about [getting started with Chart Studio in R](https://plot.ly/r/getting-started-with-chart-studio). -* append the format extension to the plot url of an existing Chart Studio plot. For example, the `.jpg` version of the plot at https://plot.ly/~chris/1638 is available at https://plot.ly/~chris/1638.jpg. The `.png` version of the plot is available at https://plot.ly/~chris/1638.png. +#### Set Environment Variables In Your R Session -#### Using Orca To Export Static Images Locally - -Version `4.7.900` and above of the `plotly` R package include the `orca()` function (replacing the `export()` function). - -This function exports images locally using [Orca](https://github.com/plotly/orca). In order to use Orca with the `plotly` R package, you need to install the [`processx`](https://github.com/r-lib/processx) package as well. +Let the R session know about your Chart Studio authorization credentials by setting environment variables using [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv). ```{r, eval = FALSE} -if (!require("processx")) install.packages("processx") - -p <- plot_ly(z = ~volcano) %>% add_surface() - -orca(p, "surface-plot.svg") +Sys.setenv("plotly_username" = "YOUR USER NAME") +Sys.setenv("plotly_api_key" = "YOUR API KEY") ``` -#### Using Chart Studio to Export Static Images +#### Use The Development Version Of The `plotly` R Package -Another option for exporting the R charts you create with the `plotly` R package is to use your Chart Studio account. - -This requires using the development version of the `plotly` R package from GitHub. This can be installed using the [`devtools`](https://cran.r-project.org/web/packages/devtools/index.html) R package. +You will also need to be using the development version of the `plotly` R package in order to use the `plotly_IMAGE()` function. This can be installed from GitHub using the [`devtools`](https://cran.r-project.org/web/packages/devtools/index.html) R package by running the following command in your R session: ```r devtools::install_github("ropensci/plotly") ``` - -In addition, if you haven't already, let the R session know about your Chart Studio authorization credentials by setting environment variables using [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv). -```{r, eval = FALSE} -Sys.setenv("plotly_username" = "YOUR USER NAME") -Sys.setenv("plotly_api_key" = "YOUR API KEY") -``` +#### Export R Graph As Static Image -The `plotly_IMAGE()` function exports plots as static images using the Chart Studio web service. The image will be stored in a file in the working directory of your R session. +The `plotly_IMAGE()` function exports your R plots as static images using the Chart Studio web service. The image will be stored in a file in the working directory of your R session. ```{r} library(plotly) @@ -97,12 +83,12 @@ plotly_IMAGE(p, format = "png", out_file = "output.png") ![](https://images.plot.ly/plotly-documentation/images/output.png) -#### Appending Static Image File Types to Chart Studio Plot URLs +### Alternative Methods Of Exporting Graphs As Static Images In R -You can also view the static image version of any public Chart Studio graph by appending `.png` or `.jpeg` to the end of the URL for the graph. +#### Local Image Export -For example, view the static image of at . +As an alternative to using the Chart Studio web service to export your R graphs as static images, you can [use the built-in `orca()` function](https://plot.ly/r/image-export-orca) to export images locally. -[Chart Studio Enterprise](https://plot.ly/online_chart_maker) users can also use this method to get static images in the `.pdf`, `.svg`, and `.eps` file formats. +#### Embed R Charts in RMarkdown Documents See [Embedding Graphs in RMarkdown](https://plot.ly/r/embedding-graphs-in-rmarkdown/) to learn more about embedding R charts in RMarkdown (.Rmd) files. diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md index f1fbbf589c36..f8c84f5ef749 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md @@ -1,16 +1,16 @@ --- -description: How to export R graphs as static images. Ploty's R graphing library supports exporting to .png, - .svg, .jpg, and .pdf file formarts and exporting Chart Studio graphs. +description: How to export R graphs as static images using Chart Studio. display_as: chart_studio language: r layout: base -name: Using Chart Studio to Export Static Images +name: Exporting Graphs As Static Images Using Chart Studio order: 2 output: html_document: keep_md: true page_type: example_index -permalink: r/static-image-export/ +permalink: r/chart-studio-image-export/ +redirect_from: r/static-image-export/ sitemap: false thumbnail: thumbnail/png-export.png --- @@ -39,58 +39,43 @@ packageVersion('plotly') ## [1] '4.9.1' ``` -### Supported Formats For Static Image Export +### Supported File Formats -With the `plotly` R package, you can export your charts as static images in the `.png` and `.jpg/.jpeg` file formats. +With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg/.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). -Currenlty, exporting charts as static images in the `.eps`, `.svg`, and `.pdf` formats is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). +Currently, exporting graphs you create as static images in the `.eps`, `.svg`, and/or `.pdf` format is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). -**Note:** It is important to be aware that any R charts containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, or `parcoords`) that are exported in a vector format like `.eps`, `.svg`, and `.pdf` will include encapsulated rasters instead of vectors for some parts of the image. +**Note:** It is important to be aware that R graphs containing WebGL-based traces (i.e. of type `scattergl`, `heatmapgl`, `contourgl`, `scatter3d`, `surface`, `mesh3d`, `scatterpolargl`, `cone`, `streamtube`, `splom`, and/or `parcoords`) will include encapsulated rasters instead of vectors for some parts of the image if they are exported as static images in a vector format like `.eps`, `.svg`, and/or `.pdf`. -### Supported Methods Static Image Export +### Exporting Chart Studio Charts As Static Images -To export R charts as static images with the `plotly` R package, you can: +To export your R graphs as static images using the Chart Studio web service, you can use the built-in `plotly_IMAGE()` function. -* use the built-in integration with [Orca](https://github.com/plotly/orca), Plotly's command line application for generating static images. +#### Create A Chart Studio Account And Get An API Key -* export the image using your Chart Studio account using the `plotly_IMAGE()` fucntion. +To use the `plotly_IMAGE()` function, you will need to have a [Chart Studio account](https://chart-studio.plot.ly/Auth/login/?action=signup#/) and an API key (which can be found [in your Chart Studio account online settings](https://plot.ly/settings/api)). Learn more about [getting started with Chart Studio in R](https://plot.ly/r/getting-started-with-chart-studio). -* append the format extension to the plot url of an existing Chart Studio plot. For example, the `.jpg` version of the plot at https://plot.ly/~chris/1638 is available at https://plot.ly/~chris/1638.jpg. The `.png` version of the plot is available at https://plot.ly/~chris/1638.png. +#### Set Environment Variables In Your R Session -#### Using Orca To Export Static Images Locally - -Version `4.7.900` and above of the `plotly` R package include the `orca()` function (replacing the `export()` function). - -This function exports images locally using [Orca](https://github.com/plotly/orca). In order to use Orca with the `plotly` R package, you need to install the [`processx`](https://github.com/r-lib/processx) package as well. +Let the R session know about your Chart Studio authorization credentials by setting environment variables using [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv). ```r -if (!require("processx")) install.packages("processx") - -p <- plot_ly(z = ~volcano) %>% add_surface() - -orca(p, "surface-plot.svg") +Sys.setenv("plotly_username" = "YOUR USER NAME") +Sys.setenv("plotly_api_key" = "YOUR API KEY") ``` -#### Using Chart Studio to Export Static Images +#### Use The Development Version Of The `plotly` R Package -Another option for exporting the R charts you create with the `plotly` R package is to use your Chart Studio account. - -This requires using the development version of the `plotly` R package from GitHub. This can be installed using the [`devtools`](https://cran.r-project.org/web/packages/devtools/index.html) R package. +You will also need to be using the development version of the `plotly` R package in order to use the `plotly_IMAGE()` function. This can be installed from GitHub using the [`devtools`](https://cran.r-project.org/web/packages/devtools/index.html) R package by running the following command in your R session: ```r devtools::install_github("ropensci/plotly") ``` - -In addition, if you haven't already, let the R session know about your Chart Studio authorization credentials by setting environment variables using [`Sys.setenv()`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/Sys.setenv). - -```r -Sys.setenv("plotly_username" = "YOUR USER NAME") -Sys.setenv("plotly_api_key" = "YOUR API KEY") -``` +#### Export R Graph As Static Image -The `plotly_IMAGE()` function exports plots as static images using the Chart Studio web service. The image will be stored in a file in the working directory of your R session. +The `plotly_IMAGE()` function exports your R plots as static images using the Chart Studio web service. The image will be stored in a file in the working directory of your R session. ```r @@ -101,12 +86,12 @@ plotly_IMAGE(p, format = "png", out_file = "output.png") ![](https://images.plot.ly/plotly-documentation/images/output.png) -#### Appending Static Image File Types to Chart Studio Plot URLs +### Alternative Methods Of Exporting Graphs As Static Images In R -You can also view the static image version of any public Chart Studio graph by appending `.png` or `.jpeg` to the end of the URL for the graph. +#### Local Image Export -For example, view the static image of at . +As an alternative to using the Chart Studio web service to export your R graphs as static images, you can [use the built-in `orca()` function](https://plot.ly/r/image-export-orca) to export images locally. -[Chart Studio Enterprise](https://plot.ly/online_chart_maker) users can also use this method to get static images in the `.pdf`, `.svg`, and `.eps` file formats. +#### Embed R Charts in RMarkdown Documents See [Embedding Graphs in RMarkdown](https://plot.ly/r/embedding-graphs-in-rmarkdown/) to learn more about embedding R charts in RMarkdown (.Rmd) files. diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd index 23c9ad9d903a..54df0a913328 100644 --- a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd @@ -111,6 +111,16 @@ Chart Studio plots can be set to three different type of privacy modes: `public` By default all Chart Studio plots you create with the `plotly` R package are set to `public`. Users with free Chart Studio accounts are limited to creating `public` plots. +### Appending Static Image File Types to Chart Studio Plot URLs + +You can also view the static image version of any public Chart Studio graph by appending `.png` or `.jpeg` to the end of the URL for the graph. + +For example, view the static image of at . + +[Chart Studio Enterprise](https://plot.ly/online_chart_maker) users can also use this method to get static images in the `.pdf`, `.svg`, and `.eps` file formats. + +## Private Charts In Chart Studio + If you have private storage needs, please learn more about [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscription/?modal=true&utm_source=api-docs&utm_medium=support-oss) and would like the setting for your plots to be private, you can specify sharing as private: @@ -118,4 +128,5 @@ If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscr ```r api_create(filename = "private-graph", sharing = "private") ``` -For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) \ No newline at end of file +For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) + diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md index e138061e9879..b3896095ce51 100644 --- a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md @@ -2,16 +2,19 @@ name: Getting Started with Chart Studio permalink: r/getting-started-with-chart-studio/ description: Get started with Chart Studio and Plotly's R graphing library. -page_type: example_index -thumbnail: thumbnail/bubble.jpg +page_type: u-guide display_as: chart_studio layout: base language: r +thumbnail: thumbnail/bubble.jpg +order: 9 output: html_document: keep_md: true --- + + # Getting Started with Chart Studio and the `plotly` R Package `plotly` is an R package for creating interactive web-based graphs via the open source JavaScript graphing library [plotly.js](http://plot.ly/javascript). @@ -106,6 +109,16 @@ Chart Studio plots can be set to three different type of privacy modes: `public` By default all Chart Studio plots you create with the `plotly` R package are set to `public`. Users with free Chart Studio accounts are limited to creating `public` plots. +### Appending Static Image File Types to Chart Studio Plot URLs + +You can also view the static image version of any public Chart Studio graph by appending `.png` or `.jpeg` to the end of the URL for the graph. + +For example, view the static image of at . + +[Chart Studio Enterprise](https://plot.ly/online_chart_maker) users can also use this method to get static images in the `.pdf`, `.svg`, and `.eps` file formats. + +## Private Charts In Chart Studio + If you have private storage needs, please learn more about [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscription/?modal=true&utm_source=api-docs&utm_medium=support-oss) and would like the setting for your plots to be private, you can specify sharing as private: @@ -114,3 +127,4 @@ If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscr api_create(filename = "private-graph", sharing = "private") ``` For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) + diff --git a/_posts/r/chart-studio/output.png b/_posts/r/chart-studio/output.png index 3397b77540715b5f9c34e7fb2e2bf5dccc219c48..f671b9404c919d72e827c6d471ec7fc4150fb791 100644 GIT binary patch literal 43208 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 Date: Mon, 20 Jan 2020 13:53:16 -0500 Subject: [PATCH 04/30] update doc copy --- .../2015-04-09-static-image_r_index.Rmd | 2 +- .../2015-04-09-static-image_r_index.md | 2 +- .../r/chart-studio/2015-07-30-filenames.Rmd | 6 +-- _posts/r/chart-studio/2015-07-30-filenames.md | 8 ++-- .../r/chart-studio/2015-07-30-get-requests.md | 12 +++--- _posts/r/chart-studio/2015-08-10-knitr.Rmd | 4 +- _posts/r/chart-studio/2015-08-10-knitr.md | 43 ++++++++----------- .../2016-02-20-jupyter-notebook-r.html | 18 ++++---- .../2017-07-17-configuration-options.Rmd | 5 +-- .../2017-07-17-configuration-options.md | 3 -- ...1-17-getting-started-with-chart-studio.Rmd | 2 +- ...01-17-getting-started-with-chart-studio.md | 2 +- 12 files changed, 47 insertions(+), 60 deletions(-) diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd index e26e581a9693..55bdb9bae684 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd @@ -40,7 +40,7 @@ packageVersion('plotly') ### Supported File Formats -With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg/.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). +With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg`/`.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). Currently, exporting graphs you create as static images in the `.eps`, `.svg`, and/or `.pdf` format is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md index f8c84f5ef749..5a0c65077ca2 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md @@ -41,7 +41,7 @@ packageVersion('plotly') ### Supported File Formats -With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg/.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). +With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg`/`.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). Currently, exporting graphs you create as static images in the `.eps`, `.svg`, and/or `.pdf` format is a feature that is available only to users of [Chart Studio Enterprise](https://plot.ly/online-chart-maker/). diff --git a/_posts/r/chart-studio/2015-07-30-filenames.Rmd b/_posts/r/chart-studio/2015-07-30-filenames.Rmd index 0e89f178ebe0..fa85d4d0ca99 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.Rmd +++ b/_posts/r/chart-studio/2015-07-30-filenames.Rmd @@ -4,7 +4,7 @@ display_as: chart_studio language: r layout: base name: Updating Graphs Stored In Chart Studio -order: 1 +order: 9 output: html_document: keep_md: true @@ -46,7 +46,7 @@ api_create(p) ### How To Overwrite An Existing Plot -By default, when you call `api_create()` a new plot is created in your Chart Studio account with its own new URL. +By default, when you call `api_create()`, a new plot is created in your Chart Studio account with its own unique URL. If you would like to overwrite an existing plot in your Chart Studio account and keep the same URL, then supply a `filename` as an extra parameter to the `api_create()` function. This will keep the same URL for the plot. @@ -58,7 +58,7 @@ api_create(p, filename = "name-of-my-plotly-file") If the `filename` parameter contains the character "/", then the `api_create()` function will save that plot in a folder in your Chart Studio account. -This option is only available for [Chart Studio Enterprise subscripbers](https://plot.ly/online-chart-maker/) +This option is only available for [Chart Studio Enterprise subscribers](https://plot.ly/online-chart-maker/) ```{r} api_create(p, filename="r-docs/name-of-my-chart-studio-file") diff --git a/_posts/r/chart-studio/2015-07-30-filenames.md b/_posts/r/chart-studio/2015-07-30-filenames.md index 8bc8234792af..0b8bd6a95b1d 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.md +++ b/_posts/r/chart-studio/2015-07-30-filenames.md @@ -4,7 +4,7 @@ display_as: chart_studio language: r layout: base name: Updating Graphs Stored In Chart Studio -order: 1 +order: 9 output: html_document: keep_md: true @@ -46,11 +46,11 @@ p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length) api_create(p) ``` - + ### How To Overwrite An Existing Plot -By default, when you call `api_create()` a new plot is created in your Chart Studio account with its own new URL. +By default, when you call `api_create()`, a new plot is created in your Chart Studio account with its own unique URL. If you would like to overwrite an existing plot in your Chart Studio account and keep the same URL, then supply a `filename` as an extra parameter to the `api_create()` function. This will keep the same URL for the plot. @@ -65,7 +65,7 @@ api_create(p, filename = "name-of-my-plotly-file") If the `filename` parameter contains the character "/", then the `api_create()` function will save that plot in a folder in your Chart Studio account. -This option is only available for [Chart Studio Enterprise subscripbers](https://plot.ly/online-chart-maker/) +This option is only available for [Chart Studio Enterprise subscribers](https://plot.ly/online-chart-maker/) ```r diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.md b/_posts/r/chart-studio/2015-07-30-get-requests.md index 7b01a7e182c1..572a1fb505c8 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.md +++ b/_posts/r/chart-studio/2015-07-30-get-requests.md @@ -49,8 +49,8 @@ fig <- api_download_plot("559", "cpsievert") fig ``` -
- +
+ ### Update The Layout on A Downloaded Graph @@ -64,8 +64,8 @@ p <- layout(fig, title = paste("Modified on ", Sys.time())) p ``` -
- +
+ ### Adding a Trace to a Subplot Figure @@ -77,8 +77,8 @@ p <- add_lines(fig, x = c(1, 2), y = c(1, 2), xaxis = "x2", yaxis = "y2") p ``` -
- +
+ ### Reference diff --git a/_posts/r/chart-studio/2015-08-10-knitr.Rmd b/_posts/r/chart-studio/2015-08-10-knitr.Rmd index 01809a108620..59afe9c65072 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.Rmd +++ b/_posts/r/chart-studio/2015-08-10-knitr.Rmd @@ -93,6 +93,4 @@ You can control the height and width of that `iframe` through the `height`/`widt This [post](http://help.plot.ly/embed-graphs-in-websites/) has more details on how to embed Chart Studio graphs within HTML `iframes`, but you could also use Chart Studio's built-in image export by simply adding a `.png` or `.jpeg` file extension to the end of the figure's URL. -```{r} -htmltools::tags$img(src = paste0(f[["url"]], ".png")) -``` \ No newline at end of file +For example, view the static image of at . \ No newline at end of file diff --git a/_posts/r/chart-studio/2015-08-10-knitr.md b/_posts/r/chart-studio/2015-08-10-knitr.md index 0027d5607194..a17afaa18a15 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.md +++ b/_posts/r/chart-studio/2015-08-10-knitr.md @@ -51,8 +51,8 @@ p <- plot_ly(economics, x = ~date, y = ~unemploy / pop) p ``` -
- +
+ Sometimes, you may want to print a _list_ of graphs in an RMarkdown document. @@ -63,10 +63,10 @@ If, for some reason, you don't want to use the [`subplot()` function](https://pl htmltools::tagList(list(p, p)) ``` -
- -
- +
+ +
+ Another way to print multiple graphs in an RMarkdown document with the `plotly` R package is by using the [`lapply`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/lapply) function: @@ -77,12 +77,12 @@ library(plotly) htmltools::tagList(lapply(1:3, function(x) { plot_ly(x = rnorm(10)) })) ``` -
- -
- -
- +
+ +
+ +
+ Alternatively, you can use a `for` loop instead of `lapply`: @@ -97,12 +97,12 @@ for (i in 1:3) { l ``` -
- -
- -
- +
+ +
+ +
+ ### Embedding Chart Studio Graphs in RMarkdown Files @@ -121,9 +121,4 @@ You can control the height and width of that `iframe` through the `height`/`widt This [post](http://help.plot.ly/embed-graphs-in-websites/) has more details on how to embed Chart Studio graphs within HTML `iframes`, but you could also use Chart Studio's built-in image export by simply adding a `.png` or `.jpeg` file extension to the end of the figure's URL. - -```r -htmltools::tags$img(src = paste0(f[["url"]], ".png")) -``` - - +For example, view the static image of at . diff --git a/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html b/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html index 6529f72b93ce..09e84ca348aa 100644 --- a/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html +++ b/_posts/r/chart-studio/2016-02-20-jupyter-notebook-r.html @@ -11,12 +11,12 @@ thumbnail: thumbnail/png-export.png --- -

Plotly charts in Jupyter notebooks using R

+

Embedding R Graphs in Jupyter Notebooks

-

This tutorial should help you get up and running with embedding Plotly charts inside a Jupyter notebook using R

+

This tutorial should help you get up and running with embedding R charts inside a Jupyter notebook.


-

Install python


-

Head on over to https://www.python.org/downloads/, download and install python.

+

Install Python


+

Head on over to https://www.python.org/downloads/ and install Python.


Install Jupyter

Simply run the following command in your console:

@@ -25,7 +25,7 @@

Install Jupyter

Use pip3 for python 3.x. See here for more details.


Install IRKernel

-

Next we'll install a R Kernel so that we can use R commands inside a Jupyter notebook. This is similar to installing a R package. Run this in R.


+

Next we'll install a R Kernel so that we can use R commands inside a Jupyter notebook. This is similar to installing a R package. Run the following code in your R session:


install.packages(c('repr', 'IRdisplay', 'pbdZMQ', 'devtools'))
 devtools::install_github('IRkernel/IRkernel')
 IRkernel::installspec()
@@ -33,10 +33,10 @@ 

Install IRKernel

See here for details.


Install Pandoc

-

Pandoc is required to successfully render a Plotly chart in a Jupyter notebook. You could either:


+

Pandoc is required to successfully render an R chart in a Jupyter notebook. You could either:


    -
  • Download and install Pandoc from here
  • -
  • Or use the *.exe files in \bin\pandoc from your R-Studio installation folder
  • +
  • Download and install Pandoc from here.
  • +
  • Or use the *.exe files in \bin\pandoc from your R-Studio installation folder.

Make sure that both pandoc.exe and pandoc-citeproc are available in your local python installation folder (or Jupyter environment if you have setup a separate environment).


@@ -60,7 +60,7 @@

Create a notebook


Examples:

-

Here are some examples on how to use plotly inside of a Jupyter notebook.

+

Here are some examples on how to use Plotly's R graphing library inside of a Jupyter notebook.

diff --git a/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd b/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd index 213d52232f81..0095b6738b64 100644 --- a/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd +++ b/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd @@ -55,7 +55,4 @@ htmlwidgets::saveWidget(config(p, displayModeBar = FALSE), "graph.html") ``` #### Reference -Arguments are documented [here](https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js). -```r -?config -``` \ No newline at end of file +Arguments are documented [here](https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js). \ No newline at end of file diff --git a/_posts/r/chart-studio/2017-07-17-configuration-options.md b/_posts/r/chart-studio/2017-07-17-configuration-options.md index b3d1ef7bcade..5aa4c1fa8c61 100644 --- a/_posts/r/chart-studio/2017-07-17-configuration-options.md +++ b/_posts/r/chart-studio/2017-07-17-configuration-options.md @@ -61,6 +61,3 @@ htmlwidgets::saveWidget(config(p, displayModeBar = FALSE), "graph.html") #### Reference Arguments are documented [here](https://github.com/plotly/plotly.js/blob/master/src/plot_api/plot_config.js). -```r -?config -``` diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd index 54df0a913328..375b4a30a17f 100644 --- a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd @@ -7,7 +7,7 @@ display_as: chart_studio layout: base language: r thumbnail: thumbnail/bubble.jpg -order: 9 +order: 1 output: html_document: keep_md: true diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md index b3896095ce51..01f70a3c8a8c 100644 --- a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md @@ -7,7 +7,7 @@ display_as: chart_studio layout: base language: r thumbnail: thumbnail/bubble.jpg -order: 9 +order: 1 output: html_document: keep_md: true From cf8820b9c8a18f8478bc6474827f6445c925681f Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Mon, 20 Jan 2020 15:31:10 -0500 Subject: [PATCH 05/30] Update _posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd Co-Authored-By: Nicolas Kruchten --- .../2020-01-17-getting-started-with-chart-studio.Rmd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd index 375b4a30a17f..7f66d5a689f0 100644 --- a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.Rmd @@ -21,7 +21,7 @@ knitr::opts_chunk$set(message = FALSE, warning=FALSE) `plotly` is an R package for creating interactive web-based graphs via the open source JavaScript graphing library [plotly.js](http://plot.ly/javascript). -As of version 2.0 (November 17, 2015), R graphs created with the `plotly` R package are rendered *locally* through the [htmlwidgets](http://www.htmlwidgets.org/) framework. +As of version 2.0 (November 17, 2015), R graphs created with the `plotly` R package are, by default, rendered *locally* through the [htmlwidgets](http://www.htmlwidgets.org/) framework. ## Initialization for Online Plotting @@ -129,4 +129,3 @@ If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscr api_create(filename = "private-graph", sharing = "private") ``` For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) - From 81a027d32afbc352832937492a38fb17fa124399 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Mon, 20 Jan 2020 15:50:17 -0500 Subject: [PATCH 06/30] removing redirect_from --- _posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd | 3 +-- _posts/r/chart-studio/2015-04-09-static-image_r_index.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd index 55bdb9bae684..6ced6dc2bd0a 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd @@ -10,7 +10,6 @@ output: keep_md: true page_type: example_index permalink: r/chart-studio-image-export/ -redirect_from: r/static-image-export/ sitemap: false thumbnail: thumbnail/png-export.png --- @@ -87,7 +86,7 @@ plotly_IMAGE(p, format = "png", out_file = "output.png") #### Local Image Export -As an alternative to using the Chart Studio web service to export your R graphs as static images, you can [use the built-in `orca()` function](https://plot.ly/r/image-export-orca) to export images locally. +As an alternative to using the Chart Studio web service to export your R graphs as static images, you can [use the built-in `orca()` function](https://plot.ly/r/static-image-export) to export images locally. #### Embed R Charts in RMarkdown Documents diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md index 5a0c65077ca2..501cfcec9cf8 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md @@ -10,7 +10,6 @@ output: keep_md: true page_type: example_index permalink: r/chart-studio-image-export/ -redirect_from: r/static-image-export/ sitemap: false thumbnail: thumbnail/png-export.png --- @@ -90,7 +89,7 @@ plotly_IMAGE(p, format = "png", out_file = "output.png") #### Local Image Export -As an alternative to using the Chart Studio web service to export your R graphs as static images, you can [use the built-in `orca()` function](https://plot.ly/r/image-export-orca) to export images locally. +As an alternative to using the Chart Studio web service to export your R graphs as static images, you can [use the built-in `orca()` function](https://plot.ly/r/static-image-export) to export images locally. #### Embed R Charts in RMarkdown Documents From 68fe0e4e8d3e099c665670a974e47a704165a891 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 22 Jan 2020 17:09:31 -0500 Subject: [PATCH 07/30] update ci script so it fails if a post has order less than five but also page_type: u-guide --- front-matter-ci.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/front-matter-ci.py b/front-matter-ci.py index 551d8ddcd855..e58a3de117ef 100644 --- a/front-matter-ci.py +++ b/front-matter-ci.py @@ -77,6 +77,12 @@ def check_noTrailingSlash(meta_to_check): failures.append(meta["permalink"]) return "do any permalinks not end with a trailing slash?", failures +def check_no_example_index_with_order_under_5(meta_to_check): + failures = [] + for meta in meta_to_check: + if meta["order"] < 5 and meta['page_type'] == "u-guide": + failures.append(meta) + return "do any posts have order less than five but page_type: u-guide?", failures categories = [ "file_settings", From fec570d9e0b67e918af8bda01b9720b2f0544dc4 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 22 Jan 2020 17:17:00 -0500 Subject: [PATCH 08/30] update script to print just permalinks of failed posts --- front-matter-ci.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front-matter-ci.py b/front-matter-ci.py index e58a3de117ef..0e0f8131a80d 100644 --- a/front-matter-ci.py +++ b/front-matter-ci.py @@ -81,7 +81,7 @@ def check_no_example_index_with_order_under_5(meta_to_check): failures = [] for meta in meta_to_check: if meta["order"] < 5 and meta['page_type'] == "u-guide": - failures.append(meta) + failures.append(meta['permalink']) return "do any posts have order less than five but page_type: u-guide?", failures categories = [ From c60c35842210407dd3b87e5b9119d9dac4c70fe6 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Fri, 24 Jan 2020 16:50:08 -0500 Subject: [PATCH 09/30] inline example figures --- .../2015-09-24-config-locale.html | 4 +--- ...2015-09-24-config-opt-display-modebar.html | 1 - .../2015-09-24-config-opt-displaylogo.html | 1 - .../2015-09-24-config-opt-hide-modebar.html | 1 - .../2015-09-24-config-opt-link-text.html | 23 ++++++++++--------- .../2015-09-24-config-opt-scrollzoom.html | 1 - .../2015-09-24-config-opt-showlink.html | 5 ++-- .../2015-09-24-config-opt-static-plot.html | 1 - ...09-24-config-opt-toImageButtonOptions.html | 1 - .../2015-09-24-config-showSendToCloud.html | 1 - .../2015-09-24-config_options_index.html | 1 + .../config-options/2017-03-01-edit_mode.html | 8 +++---- .../2018-02-04-config-opt-modebarButtons.html | 1 - .../2018-09-12-config-opt-responsive.html | 3 +-- 14 files changed, 22 insertions(+), 30 deletions(-) diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-locale.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-locale.html index 7526cc29a84b..d0ff05a168ec 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-locale.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-locale.html @@ -1,6 +1,5 @@ --- name: Change the Default Locale -plot_url: https://codepen.io/plotly/embed/rqrgEQ/?height=600&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 7.5 @@ -36,5 +35,4 @@ var config = {locale: 'fr'}; -Plotly.newPlot('myDiv', data, layout, config); - +Plotly.newPlot('myDiv', data, layout, config); \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html index d3842325089d..6c59e90cc275 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html @@ -1,6 +1,5 @@ --- name: Always Display the Modebar -plot_url: https://codepen.io/plotly/embed/jbMvLq/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 4 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-displaylogo.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-displaylogo.html index 9b702bc880e4..1c2d9a696e7c 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-displaylogo.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-displaylogo.html @@ -1,6 +1,5 @@ --- name: Hide the Plotly Logo on the Modebar -plot_url: https://codepen.io/plotly/embed/EVgeWb/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 8 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html index 0e28e66029f4..7a07028e7f3e 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html @@ -1,6 +1,5 @@ --- name: Hide the Modebar -plot_url: https://codepen.io/plotly/embed/YyGOLg/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 5 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html index 40547d1eaceb..130d03bd3697 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html @@ -1,6 +1,5 @@ --- -name: Modify the "Edit Chart" Link Text -plot_url: https://codepen.io/plotly/embed/WQGgbe/?height=600&theme-id=15263&default-tab=result +name: Customize The `Edit Chart` Link Text language: plotly_js suite: configuration order: 7 @@ -8,14 +7,16 @@ arrangement: horizontal --- var trace1 = { - z: [[0, 1, 2, 3, 4, 5, 6], [1, 9, 4, 7, 5, 2, 4], [2, 4, 2, 1, 6, 9, 3]], - type: 'heatmap' -}; + z: [[0, 1, 2, 3, 4, 5, 6], + [1, 9, 4, 7, 5, 2, 4], + [2, 4, 2, 1, 6, 9, 3]], + type: 'heatmap' + }; + + var data = [trace1]; -var data = [trace1]; + var layout = { + title: 'Customize The Edit Chart Link Text' + }; -var layout = { - title: 'Change the Link Text' -}; - -Plotly.newPlot('myDiv', data, layout, {linkText: 'Change this text'}); + Plotly.newPlot('myDiv', data, layout, {showLink: true, linkText: 'This text is custom!'}); \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-scrollzoom.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-scrollzoom.html index 3a918b0b106c..e05bddbbac9d 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-scrollzoom.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-scrollzoom.html @@ -1,6 +1,5 @@ --- name: Scroll and Zoom -plot_url: https://codepen.io/plotly/embed/QjKZbg/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 1 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-showlink.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-showlink.html index b2a8905a5509..c54a959727fe 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-showlink.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-showlink.html @@ -1,6 +1,5 @@ --- -name: Display the "Edit Chart" Link -plot_url: https://codepen.io/plotly/embed/epdjem/?height=600&theme-id=15263&default-tab=result +name: Display the `Edit Chart` Link language: plotly_js suite: configuration order: 6 @@ -18,7 +17,9 @@ }; var data = [trace1]; + var layout = { title: 'Display the Edit Chart Link' }; + Plotly.newPlot('myDiv', data, layout, {showLink: true}); diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-static-plot.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-static-plot.html index fa2fff977f97..9d044266a110 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-static-plot.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-static-plot.html @@ -1,6 +1,5 @@ --- name: Making a Static Chart -plot_url: https://codepen.io/plotly/embed/YyGjda/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 3 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-toImageButtonOptions.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-toImageButtonOptions.html index ff430c1e4820..e4825cd3bd75 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-toImageButtonOptions.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-toImageButtonOptions.html @@ -1,6 +1,5 @@ --- name: Customize Download Plot Options -plot_url: https://codepen.io/plotly/embed/MZjYRB/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 3.1 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-showSendToCloud.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-showSendToCloud.html index ed5ec7b1089e..d799d3955a20 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-showSendToCloud.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-showSendToCloud.html @@ -1,6 +1,5 @@ --- name: Display Edit in Chart Studio Button -plot_url: https://codepen.io/plotly/embed/aPpzzw/?height=600&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 7.1 diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html index 209435506358..07c8ab89a4ad 100755 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html @@ -8,6 +8,7 @@ thumbnail: thumbnail/modebar-icons.png display_as: reference --- + The plotly.js config argument sets properties like the mode bar buttons and the interactivity in the chart. It's the last argument in Plotly.newPlot and Plotly.newPlot calls. diff --git a/_posts/plotly_js/fundamentals/config-options/2017-03-01-edit_mode.html b/_posts/plotly_js/fundamentals/config-options/2017-03-01-edit_mode.html index ac2395e4b15f..b302df1452be 100644 --- a/_posts/plotly_js/fundamentals/config-options/2017-03-01-edit_mode.html +++ b/_posts/plotly_js/fundamentals/config-options/2017-03-01-edit_mode.html @@ -1,11 +1,12 @@ --- -name: Edit Mode -plot_url: https://codepen.io/plotly/embed/VpeMKo/?height=450&theme-id=15263&default-tab=result +name: Editable Mode language: plotly_js suite: configuration order: 2 sitemap: false arrangement: horizontal +markdown_content: | + In editable mode, users can edit the chart title, axis labels and trace names in the legend. --- var trace1 = { x: [0, 1, 2, 3, 4], @@ -22,7 +23,6 @@ }; var data = [trace1, trace2]; -var layout = { - title: 'Click Here
to Edit Chart Title'}; +var layout = {title: 'Click Here
to Edit Chart Title'}; Plotly.newPlot('myDiv', data, layout, {editable: true}); \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html b/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html index 5640cb93e0e0..46d8c34b1dea 100644 --- a/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html +++ b/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html @@ -1,6 +1,5 @@ --- name: Remove Modebar Buttons -plot_url: https://codepen.io/plotly/embed/OQyEaP/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 9 diff --git a/_posts/plotly_js/fundamentals/config-options/2018-09-12-config-opt-responsive.html b/_posts/plotly_js/fundamentals/config-options/2018-09-12-config-opt-responsive.html index 395d1115310e..fb995332ed81 100644 --- a/_posts/plotly_js/fundamentals/config-options/2018-09-12-config-opt-responsive.html +++ b/_posts/plotly_js/fundamentals/config-options/2018-09-12-config-opt-responsive.html @@ -1,6 +1,5 @@ --- name: Making a Responsive Chart -plot_url: https://codepen.io/plotly/embed/BOxMXz/?height=550&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 10 @@ -22,7 +21,7 @@ var data = [ trace1 ]; var layout = { - title: 'Responsive to window's size!', + title: 'Responsive to window size!', font: {size: 18} }; From 8aaad6e87b16e6c1d725fda02c48a6e83411b2c6 Mon Sep 17 00:00:00 2001 From: mahdis-z Date: Fri, 24 Jan 2020 16:51:17 -0500 Subject: [PATCH 10/30] modebar buttons --- .../2020-01-24-add-button-to-modebar.html | 41 +++++++++++++++++++ .../2020-01-24-display-modebar.html | 20 +++++++++ .../2020-01-24-remove-modebarButtons.html | 28 +++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 _posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html create mode 100644 _posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html create mode 100644 _posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html new file mode 100644 index 000000000000..d766e28a89a6 --- /dev/null +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html @@ -0,0 +1,41 @@ +--- +name: Add Buttons to ModeBar +plot_url: https://codepen.io/plotly/embed/gObEmLr/?height=450&theme-id=15263&default-tab=result +language: plotly_js +suite: configuration +order: 5.7 +sitemap: false +arrangement: horizontal +markdown_content: | + The following example shows how to add a button to your modebar, either using one of the [Plotly icons](https://github.com/plotly/plotly.js/blob/master/src/fonts/ploticon.js) or an [arbitrary icon](https://fontawesome.com/icons?d=gallery&m=free) with a custom behaviour. +--- +var icon1 = { + 'width': 500, + 'height': 600, + 'path':'M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z'} +var colors = ['green', 'red', 'blue'] +var data = [{ + mode: 'lines', + y: [2, 1, 2], + line: {color: colors[0], width: 3, shape: 'spline'}}] +var layout = { + title: 'add mode bar button with custom icon', + modebardisplay: false} +var config = { + modeBarButtonsToAdd: [ + { + name: 'color toggler', + icon: icon1, + click: function(gd) { + var newColor = colors[Math.floor(3 * Math.random())] + Plotly.restyle(gd, 'line.color', newColor) + }}, + { + name: 'button1', + icon: Plotly.Icons.pencil, + direction: 'up', + click: function(gd) {alert('button1') + }}], + modeBarButtonsToRemove: ['pan2d','select2d','lasso2d','resetScale2d','zoomOut2d']} + +Plotly.newPlot('graph', data, layout, config) \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html new file mode 100644 index 000000000000..6a89f90b2dfc --- /dev/null +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html @@ -0,0 +1,20 @@ +--- +name: Display the Modebar +plot_url: https://codepen.io/plotly/embed/jbMvLq/?height=450&theme-id=15263&default-tab=result +language: plotly_js +suite: configuration +order: 4 +sitemap: false +arrangement: horizontal +markdown_content: | + When you hover over the top right of a Plotly graph, a bar appears which we call it `modeBar`. To display or hide this modebar set `displayModeBar` in `config` to `true` or `false`. +--- +var data = { + y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], + x: [90, 40, 60, 80, 75, 92, 87, 73], + type: 'bar', + orientation: 'h' +}; + +var layout = {title: 'Always Display the Modebar', showlegend: false}; +Plotly.newPlot('myDiv', data, layout, {displayModeBar: true}); diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html new file mode 100644 index 000000000000..977765566073 --- /dev/null +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html @@ -0,0 +1,28 @@ +--- +name: Remove ModeBar Button +plot_url: https://codepen.io/plotly/embed/OQyEaP/?height=450&theme-id=15263&default-tab=result +language: plotly_js +suite: configuration +order: 5.5 +sitemap: false +arrangement: horizontal +markdown_content: | + To delete buttons from the modebar, put buttons name in an array of string and pass it to 'modeBarButtonsToRemove' in config. Here is all the buttons' names: +
    +
  • - 2D: zoom2d, pan2d, select2d, lasso2d, zoomIn2d, zoomOut2d, autoScale2d, resetScale2d
  • +
  • - 3D: zoom3d, pan3d, orbitRotation, tableRotation, handleDrag3d, resetCameraDefault3d, resetCameraLastSave3d, hoverClosest3d
  • +
  • - Cartesian: hoverClosestCartesian, hoverCompareCartesian
  • +
  • - Geo: zoomInGeo, zoomOutGeo, resetGeo, hoverClosestGeo
  • +
  • - Other: hoverClosestGl2d, hoverClosestPie, toggleHover, resetViews, "toImage", "sendDataToCloud", "toggleSpikelines", “resetViewMapbox"
  • +
+--- +var data = { + x:['trees', 'flowers', 'hedges'], + y: [90, 130, 40], + type: 'bar'}; + +var layout = { + title: 'Remove Modebar Buttons', + showlegend: false}; + +Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}); From 9b79d9855e442773450689728ca296231a1bd9b1 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Fri, 24 Jan 2020 17:13:18 -0500 Subject: [PATCH 11/30] merge work to inline examples --- .../2018-02-04-config-opt-modebarButtons.html | 20 ------------------ .../2020-01-24-add-button-to-modebar.html | 21 ++++++++++++------- .../2020-01-24-display-modebar.html | 10 ++++----- .../2020-01-24-remove-modebarButtons.html | 21 +++++++++---------- 4 files changed, 29 insertions(+), 43 deletions(-) delete mode 100644 _posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html diff --git a/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html b/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html deleted file mode 100644 index 46d8c34b1dea..000000000000 --- a/_posts/plotly_js/fundamentals/config-options/2018-02-04-config-opt-modebarButtons.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Remove Modebar Buttons -language: plotly_js -suite: configuration -order: 9 -sitemap: false -arrangement: horizontal ---- - -var trace1 = { - x:['trees', 'flowers', 'hedges'], - y: [90, 130, 40], - type: 'bar' -}; - -var data = [trace1]; -var layout = { - title: 'Remove Modebar Buttons', - showlegend: false}; -Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}); diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html index d766e28a89a6..ca2f38e53bc2 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html @@ -1,26 +1,32 @@ --- name: Add Buttons to ModeBar -plot_url: https://codepen.io/plotly/embed/gObEmLr/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 5.7 sitemap: false arrangement: horizontal markdown_content: | - The following example shows how to add a button to your modebar, either using one of the [Plotly icons](https://github.com/plotly/plotly.js/blob/master/src/fonts/ploticon.js) or an [arbitrary icon](https://fontawesome.com/icons?d=gallery&m=free) with a custom behaviour. + The following example shows how to add a button to your modebar, either by using one of the [Plotly icons](https://github.com/plotly/plotly.js/blob/master/src/fonts/ploticon.js) or an [arbitrary icon](https://fontawesome.com/icons?d=gallery&m=free) with a custom behaviour. --- var icon1 = { 'width': 500, 'height': 600, - 'path':'M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z'} + 'path': 'M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z' +} + var colors = ['green', 'red', 'blue'] + var data = [{ mode: 'lines', y: [2, 1, 2], - line: {color: colors[0], width: 3, shape: 'spline'}}] + line: {color: colors[0], width: 3, shape: 'spline'} +}] + var layout = { title: 'add mode bar button with custom icon', - modebardisplay: false} + modebardisplay: false +} + var config = { modeBarButtonsToAdd: [ { @@ -36,6 +42,7 @@ direction: 'up', click: function(gd) {alert('button1') }}], - modeBarButtonsToRemove: ['pan2d','select2d','lasso2d','resetScale2d','zoomOut2d']} + modeBarButtonsToRemove: ['pan2d','select2d','lasso2d','resetScale2d','zoomOut2d'] +} -Plotly.newPlot('graph', data, layout, config) \ No newline at end of file +Plotly.newPlot('myDiv', data, layout, config) \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html index 6a89f90b2dfc..123b08b380ba 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html @@ -1,20 +1,20 @@ --- name: Display the Modebar -plot_url: https://codepen.io/plotly/embed/jbMvLq/?height=450&theme-id=15263&default-tab=result language: plotly_js suite: configuration order: 4 sitemap: false arrangement: horizontal markdown_content: | - When you hover over the top right of a Plotly graph, a bar appears which we call it `modeBar`. To display or hide this modebar set `displayModeBar` in `config` to `true` or `false`. + When you hover over the top right of a figure generated with `plotly.js`, a bar appears which we call a `modeBar`. To display or hide this modebar set the `displayModeBar` attribute in the `config` of your figure to `true` or `false`, respectively. --- var data = { y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], x: [90, 40, 60, 80, 75, 92, 87, 73], type: 'bar', orientation: 'h' -}; +} -var layout = {title: 'Always Display the Modebar', showlegend: false}; -Plotly.newPlot('myDiv', data, layout, {displayModeBar: true}); +var layout = {title: 'Always Display the Modebar', showlegend: false} + +Plotly.newPlot('myDiv', data, layout, {displayModeBar: true}) diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html index 977765566073..d87ea928fdf2 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html @@ -1,28 +1,27 @@ --- -name: Remove ModeBar Button -plot_url: https://codepen.io/plotly/embed/OQyEaP/?height=450&theme-id=15263&default-tab=result +name: Remove ModeBar Buttons language: plotly_js suite: configuration order: 5.5 sitemap: false arrangement: horizontal markdown_content: | - To delete buttons from the modebar, put buttons name in an array of string and pass it to 'modeBarButtonsToRemove' in config. Here is all the buttons' names: + To delete buttons from the modebar, pass an array of strings containing the names of the buttons you want to remove to the `modeBarButtonsToRemove` attribute in the figure's configuration object. Note that different chart types have different default modebars. The following is a list of all the modebar buttons and the chart types they are associated with:
    -
  • - 2D: zoom2d, pan2d, select2d, lasso2d, zoomIn2d, zoomOut2d, autoScale2d, resetScale2d
  • -
  • - 3D: zoom3d, pan3d, orbitRotation, tableRotation, handleDrag3d, resetCameraDefault3d, resetCameraLastSave3d, hoverClosest3d
  • -
  • - Cartesian: hoverClosestCartesian, hoverCompareCartesian
  • -
  • - Geo: zoomInGeo, zoomOutGeo, resetGeo, hoverClosestGeo
  • -
  • - Other: hoverClosestGl2d, hoverClosestPie, toggleHover, resetViews, "toImage", "sendDataToCloud", "toggleSpikelines", “resetViewMapbox"
  • +
  • - 2D: `zoom2d`, `pan2d`, `select2d`, `lasso2d`, `zoomIn2d`, `zoomOut2d`, `autoScale2d`, `resetScale2d`
  • +
  • - 3D: `zoom3d, `pan3d`, `orbitRotation`, `tableRotation`, `handleDrag3d`, resetCameraDefault3d, `resetCameraLastSave3d`, `hoverClosest3d`
  • +
  • - Cartesian: `hoverClosestCartesian, `hoverCompareCartesian`
  • +
  • - Geo: `zoomInGeo, `zoomOutGeo`, `resetGeo`, `hoverClosestGeo`
  • +
  • - Other: `hoverClosestGl2d`, `hoverClosestPie`, `toggleHover`, `resetViews`, toImage, `sendDataToCloud`, `toggleSpikelines`, `resetViewMapbox`
--- var data = { x:['trees', 'flowers', 'hedges'], y: [90, 130, 40], - type: 'bar'}; + type: 'bar'} var layout = { title: 'Remove Modebar Buttons', - showlegend: false}; + showlegend: false} -Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}); +Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}) From 22c0923c70c96324f494bfad6d7023624d8e10f2 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Fri, 24 Jan 2020 17:26:22 -0500 Subject: [PATCH 12/30] fixup inlined charts --- ...2015-09-24-config-opt-display-modebar.html | 23 ------------------- .../2020-01-24-display-modebar.html | 19 +++++++++------ .../2020-01-24-remove-modebarButtons.html | 18 +++++++++------ 3 files changed, 23 insertions(+), 37 deletions(-) delete mode 100644 _posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html deleted file mode 100644 index 6c59e90cc275..000000000000 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-display-modebar.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Always Display the Modebar -language: plotly_js -suite: configuration -order: 4 -sitemap: false -arrangement: horizontal ---- -var trace1 = { - y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], - x: [90, 40, 60, 80, 75, 92, 87, 73], - type: 'bar', - orientation: 'h' -}; - -var data = [trace1]; - -var layout = { - title: 'Always Display the Modebar', - showlegend: false -}; - -Plotly.newPlot('myDiv', data, layout, {displayModeBar: true}); diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html index 123b08b380ba..7ba50c3d05b5 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html @@ -1,5 +1,5 @@ --- -name: Display the Modebar +name: Always Display the Modebar language: plotly_js suite: configuration order: 4 @@ -8,13 +8,18 @@ markdown_content: | When you hover over the top right of a figure generated with `plotly.js`, a bar appears which we call a `modeBar`. To display or hide this modebar set the `displayModeBar` attribute in the `config` of your figure to `true` or `false`, respectively. --- -var data = { - y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], - x: [90, 40, 60, 80, 75, 92, 87, 73], - type: 'bar', - orientation: 'h' +var trace1 = { + y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], + x: [90, 40, 60, 80, 75, 92, 87, 73], + type: 'bar', + orientation: 'h' } + +var data = [trace1] -var layout = {title: 'Always Display the Modebar', showlegend: false} +var layout = { + title: 'Always Display the Modebar', + showlegend: false +} Plotly.newPlot('myDiv', data, layout, {displayModeBar: true}) diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html index d87ea928fdf2..56112fbd57ac 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html @@ -15,13 +15,17 @@
  • - Other: `hoverClosestGl2d`, `hoverClosestPie`, `toggleHover`, `resetViews`, toImage, `sendDataToCloud`, `toggleSpikelines`, `resetViewMapbox`
  • --- -var data = { - x:['trees', 'flowers', 'hedges'], - y: [90, 130, 40], - type: 'bar'} +var trace1 = { + x:['trees', 'flowers', 'hedges'], + y: [90, 130, 40], + type: 'bar' +} + +var data = [trace1]; var layout = { - title: 'Remove Modebar Buttons', - showlegend: false} + title: 'Remove Modebar Buttons', + showlegend: false +} -Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}) +Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}); \ No newline at end of file From a700849a923d00f4fa0c45fe58aa14d603a75483 Mon Sep 17 00:00:00 2001 From: mahdis-z Date: Mon, 27 Jan 2020 14:38:53 -0500 Subject: [PATCH 13/30] minor revisions --- .../2015-09-24-config-opt-link-text.html | 20 +++++--------- .../2020-01-24-add-button-to-modebar.html | 7 ++--- .../2020-01-24-display-modebar.html | 12 +++------ .../2020-01-24-remove-modebarButtons.html | 26 ++++++++----------- 4 files changed, 24 insertions(+), 41 deletions(-) diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html index 130d03bd3697..dced1b265f12 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-link-text.html @@ -6,17 +6,11 @@ sitemap: false arrangement: horizontal --- -var trace1 = { - z: [[0, 1, 2, 3, 4, 5, 6], - [1, 9, 4, 7, 5, 2, 4], - [2, 4, 2, 1, 6, 9, 3]], - type: 'heatmap' - }; - - var data = [trace1]; +var data = [{ + z: [[0, 1, 2, 3, 4, 5, 6], + [1, 9, 4, 7, 5, 2, 4], + [2, 4, 2, 1, 6, 9, 3]], + type: 'heatmap'}] - var layout = { - title: 'Customize The Edit Chart Link Text' - }; - - Plotly.newPlot('myDiv', data, layout, {showLink: true, linkText: 'This text is custom!'}); \ No newline at end of file +var layout = {title: 'Customize The Edit Chart Link Text'} +Plotly.newPlot('myDiv', data, layout, {showLink: true, linkText: 'This text is custom!'}) \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html index ca2f38e53bc2..b40d4d9920dd 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-add-button-to-modebar.html @@ -15,7 +15,6 @@ } var colors = ['green', 'red', 'blue'] - var data = [{ mode: 'lines', y: [2, 1, 2], @@ -24,8 +23,7 @@ var layout = { title: 'add mode bar button with custom icon', - modebardisplay: false -} + modebardisplay: false} var config = { modeBarButtonsToAdd: [ @@ -42,7 +40,6 @@ direction: 'up', click: function(gd) {alert('button1') }}], - modeBarButtonsToRemove: ['pan2d','select2d','lasso2d','resetScale2d','zoomOut2d'] -} + modeBarButtonsToRemove: ['pan2d','select2d','lasso2d','resetScale2d','zoomOut2d']} Plotly.newPlot('myDiv', data, layout, config) \ No newline at end of file diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html index 7ba50c3d05b5..c15077b3dcf1 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html @@ -1,5 +1,5 @@ --- -name: Always Display the Modebar +name: Display Modebar language: plotly_js suite: configuration order: 4 @@ -8,18 +8,14 @@ markdown_content: | When you hover over the top right of a figure generated with `plotly.js`, a bar appears which we call a `modeBar`. To display or hide this modebar set the `displayModeBar` attribute in the `config` of your figure to `true` or `false`, respectively. --- -var trace1 = { +var data = [{ y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], x: [90, 40, 60, 80, 75, 92, 87, 73], type: 'bar', - orientation: 'h' -} - -var data = [trace1] + orientation: 'h'}] var layout = { title: 'Always Display the Modebar', - showlegend: false -} + showlegend: false} Plotly.newPlot('myDiv', data, layout, {displayModeBar: true}) diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html index 56112fbd57ac..c0026066f223 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-remove-modebarButtons.html @@ -7,25 +7,21 @@ arrangement: horizontal markdown_content: | To delete buttons from the modebar, pass an array of strings containing the names of the buttons you want to remove to the `modeBarButtonsToRemove` attribute in the figure's configuration object. Note that different chart types have different default modebars. The following is a list of all the modebar buttons and the chart types they are associated with: -
      -
    • - 2D: `zoom2d`, `pan2d`, `select2d`, `lasso2d`, `zoomIn2d`, `zoomOut2d`, `autoScale2d`, `resetScale2d`
    • -
    • - 3D: `zoom3d, `pan3d`, `orbitRotation`, `tableRotation`, `handleDrag3d`, resetCameraDefault3d, `resetCameraLastSave3d`, `hoverClosest3d`
    • -
    • - Cartesian: `hoverClosestCartesian, `hoverCompareCartesian`
    • -
    • - Geo: `zoomInGeo, `zoomOutGeo`, `resetGeo`, `hoverClosestGeo`
    • -
    • - Other: `hoverClosestGl2d`, `hoverClosestPie`, `toggleHover`, `resetViews`, toImage, `sendDataToCloud`, `toggleSpikelines`, `resetViewMapbox`
    • -
    +
      +
    • -'2D', `zoom2d`, `pan2d`, `select2d`, `lasso2d`, `zoomIn2d`, `zoomOut2d`, `autoScale2d`, `resetScale2d`
    • +
    • -'3D', `zoom3d`, `pan3d`, `orbitRotation`, `tableRotation`, `handleDrag3d`, `resetCameraDefault3d`, `resetCameraLastSave3d`, `hoverClosest3d`
    • +
    • -'Cartesian', `hoverClosestCartesian`, `hoverCompareCartesian`
    • +
    • -'Geo', `zoomInGeo`, `zoomOutGeo`, `resetGeo`, `hoverClosestGeo`
    • +
    • -'Other', `hoverClosestGl2d`, `hoverClosestPie`, `toggleHover`, `resetViews`, `toImage`, `sendDataToCloud`, `toggleSpikelines`, `resetViewMapbox`
    • +
    --- -var trace1 = { +var data = [{ x:['trees', 'flowers', 'hedges'], y: [90, 130, 40], - type: 'bar' -} - -var data = [trace1]; + type: 'bar'}] var layout = { title: 'Remove Modebar Buttons', - showlegend: false -} + showlegend: false} -Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}); \ No newline at end of file +Plotly.newPlot('myDiv', data, layout, {modeBarButtonsToRemove: ['toImage']}) \ No newline at end of file From 8381954c1b70d94f3cedc30247c54a75b0b5e912 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Mon, 27 Jan 2020 16:36:45 -0500 Subject: [PATCH 14/30] edit description and code layout --- .../2020-01-14-inside-text-orientation.html | 5 ++-- .../2020-01-14-inside-text-orientation.html | 26 +++++++++---------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html b/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html index 41c1d8278535..c8678a7e123d 100644 --- a/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html +++ b/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html @@ -1,12 +1,12 @@ --- -name: Control text orientation inside Pie slices +name: Control Text Orientation Inside Pie Chart Sectors language: plotly_js suite: pie order: 5 sitemap: false arrangement: horizontal markdown_content: | - The [insidetextorientation](https://plot.ly/javascript/reference/#pie-insidetextorientation) attribute controls the orientation of the texts inside slices. With 'auto' the texts may automatically be rotated to fit with the maximum size inside the slice. The other three options 'horizontal', 'radial', and 'tangential' forces text to be horizontal, radial, and tangential. + The `insidetextorientation` attribute controls the orientation of the text inside pie chart sectors. When set to 'auto', text may be oriented in any direction in order to be as big as possible in the middle of a sector. The 'horizontal' option orients text to be parallel with the bottom of the chart, and will make text smaller in order to achieve that goal. The 'radial' option orients text along the radius of the sector. The 'tangential' option orients text perpendicular to the radius of the sector. --- var data = [{ type: "pie", @@ -15,6 +15,7 @@ textinfo: "label+percent", insidetextorientation: "radial" }] + var layout = [{ height: 700, width: 700 diff --git a/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html b/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html index 290b602d5a86..ea008ae60c0d 100644 --- a/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html +++ b/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html @@ -1,29 +1,29 @@ --- -name: Control text orientation inside Sunburst slices +name: Control Text Orientation Inside Sunburst Chart Sectors language: plotly_js suite: sunburst order: 6 sitemap: false arrangement: horizontal markdown_content: | - The [insidetextorientation](https://plot.ly/javascript/reference/#sunburst-insidetextorientation) attribute controls the orientation of the texts inside chart sectors. When set to 'auto' the texts may automatically be rotated to fit with the maximum size inside a sector. The other three options 'horizontal', 'radial', and 'tangential' first try to orient text at the 3:00, 6:00, 9:00, and 12:00 hours. If there is no enough room, then the text would be positioned in the middle of the arc. + The `insidetextorientation` attribute controls the orientation of the text inside sunburst chart sectors. When set to 'auto', text may be oriented in any direction in order to be as big as possible in the middle of a sector. The 'horizontal' option orients text to be parallel with the bottom of the chart, and will make text smaller in order to achieve that goal. The 'radial' option orients text along the radius of the sector. The 'tangential' option orients text perpendicular to the radius of the sector. --- Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/coffee-flavors.csv', function(err, rows){ function unpack(rows, key) { return rows.map(function(row) {return row[key]}) } -var data = [{ - type: "sunburst", - maxdepth: 2, - ids: unpack(rows, 'ids'), - labels: unpack(rows, 'labels'), - parents: unpack(rows, 'parents'), - textposition: 'inside', - insidetextorientation: 'radial' -}] + var data = [{ + type: "sunburst", + maxdepth: 2, + ids: unpack(rows, 'ids'), + labels: unpack(rows, 'labels'), + parents: unpack(rows, 'parents'), + textposition: 'inside', + insidetextorientation: 'radial' + }] -var layout = {margin: {l: 0, r: 0, b: 0, t:0}} + var layout = {margin: {l: 0, r: 0, b: 0, t:0}} -Plotly.newPlot('myDiv', data, layout) + Plotly.newPlot('myDiv', data, layout) }) \ No newline at end of file From 53d50751a724448754079873f1cb21302de32f0e Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Tue, 28 Jan 2020 12:18:36 -0500 Subject: [PATCH 15/30] review fixups --- _posts/python/chart-studio/2019-07-03-get-requests.html | 7 ++++--- _posts/r/chart-studio/2015-08-10-knitr.Rmd | 2 +- _posts/r/chart-studio/2015-08-10-knitr.md | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/_posts/python/chart-studio/2019-07-03-get-requests.html b/_posts/python/chart-studio/2019-07-03-get-requests.html index 55c29c736e42..69b531c3b349 100644 --- a/_posts/python/chart-studio/2019-07-03-get-requests.html +++ b/_posts/python/chart-studio/2019-07-03-get-requests.html @@ -1,11 +1,12 @@ --- -description: How to download plotly users's public graphs and data with python. +description: How to download Chart Studio users' public graphs and data into Python. display_as: chart_studio language: python layout: base -name: Get Requests +name: Working With Chart Studio Graphs order: 8 -permalink: python/get-requests/ +permalink: python/working-with-chart-studio-graphs/ +redirect_from: python/get-requests thumbnail: thumbnail/spectral.jpg v4upgrade: True --- diff --git a/_posts/r/chart-studio/2015-08-10-knitr.Rmd b/_posts/r/chart-studio/2015-08-10-knitr.Rmd index 59afe9c65072..8c41cc6c0203 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.Rmd +++ b/_posts/r/chart-studio/2015-08-10-knitr.Rmd @@ -3,7 +3,7 @@ description: How to embed R graphs in RMarkdown files. display_as: chart_studio language: r layout: base -name: Embedding R Graphs in RMarkdown Files +name: Embedding Graphs in RMarkdown Files order: 3 output: html_document: diff --git a/_posts/r/chart-studio/2015-08-10-knitr.md b/_posts/r/chart-studio/2015-08-10-knitr.md index a17afaa18a15..a803466892ea 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.md +++ b/_posts/r/chart-studio/2015-08-10-knitr.md @@ -3,7 +3,7 @@ description: How to embed R graphs in RMarkdown files. display_as: chart_studio language: r layout: base -name: Embedding R Graphs in RMarkdown Files +name: Embedding Graphs in RMarkdown Files order: 3 output: html_document: From 12a6bd27ea45567888e39ab364555e5f1df274da Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Tue, 28 Jan 2020 13:27:45 -0500 Subject: [PATCH 16/30] update text --- .../plotly_js/basic/pie/2020-01-14-inside-text-orientation.html | 2 +- .../basic/sunburst/2020-01-14-inside-text-orientation.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html b/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html index c8678a7e123d..85ec5d096fea 100644 --- a/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html +++ b/_posts/plotly_js/basic/pie/2020-01-14-inside-text-orientation.html @@ -6,7 +6,7 @@ sitemap: false arrangement: horizontal markdown_content: | - The `insidetextorientation` attribute controls the orientation of the text inside pie chart sectors. When set to 'auto', text may be oriented in any direction in order to be as big as possible in the middle of a sector. The 'horizontal' option orients text to be parallel with the bottom of the chart, and will make text smaller in order to achieve that goal. The 'radial' option orients text along the radius of the sector. The 'tangential' option orients text perpendicular to the radius of the sector. + The `insidetextorientation` attribute controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. --- var data = [{ type: "pie", diff --git a/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html b/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html index ea008ae60c0d..98d47bd97968 100644 --- a/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html +++ b/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html @@ -6,7 +6,7 @@ sitemap: false arrangement: horizontal markdown_content: | - The `insidetextorientation` attribute controls the orientation of the text inside sunburst chart sectors. When set to 'auto', text may be oriented in any direction in order to be as big as possible in the middle of a sector. The 'horizontal' option orients text to be parallel with the bottom of the chart, and will make text smaller in order to achieve that goal. The 'radial' option orients text along the radius of the sector. The 'tangential' option orients text perpendicular to the radius of the sector. +The `insidetextorientation` attribute controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. --- Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/coffee-flavors.csv', function(err, rows){ function unpack(rows, key) { From 025a0f2c793c18cfa2309459d195422fc184857f Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Tue, 28 Jan 2020 13:36:03 -0500 Subject: [PATCH 17/30] fixup indent --- .../basic/sunburst/2020-01-14-inside-text-orientation.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html b/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html index 98d47bd97968..1083eebad1b6 100644 --- a/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html +++ b/_posts/plotly_js/basic/sunburst/2020-01-14-inside-text-orientation.html @@ -6,7 +6,7 @@ sitemap: false arrangement: horizontal markdown_content: | -The `insidetextorientation` attribute controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. + The `insidetextorientation` attribute controls the orientation of the text inside chart sectors. When set to *auto*, text may be oriented in any direction in order to be as big as possible in the middle of a sector. The *horizontal* option orients text to be parallel with the bottom of the chart, and may make text smaller in order to achieve that goal. The *radial* option orients text along the radius of the sector. The *tangential* option orients text perpendicular to the radius of the sector. --- Plotly.d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/coffee-flavors.csv', function(err, rows){ function unpack(rows, key) { From 71bb454a60a693ce4c6034fbb34eefc64f3387b1 Mon Sep 17 00:00:00 2001 From: plotlydocbot Date: Wed, 29 Jan 2020 17:05:04 +0000 Subject: [PATCH 18/30] deploying https://github.com/plotly/plotly.py/commit/4abfc78f538971abde6b03915fac50fd604ea11e From 0867bfa316f63540833f8f730f2ae6a2e9768ec9 Mon Sep 17 00:00:00 2001 From: plotlydocbot Date: Wed, 29 Jan 2020 18:11:43 +0000 Subject: [PATCH 19/30] deploying https://github.com/plotly/plotly.r-docs/commit/9815686531edc0c66eb3e01b3b5efba9485f320b From a8a0fc4a9bab344018c3006145bfb6064bd55ba2 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 14:18:15 -0500 Subject: [PATCH 20/30] update url of python/v3 get requests doc --- .../get-requests/2015-04-09-get-requests_python_index.html | 6 ++++-- _posts/r/chart-studio/2015-07-30-get-requests.Rmd | 2 +- _posts/r/chart-studio/2015-07-30-get-requests.md | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html b/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html index 352fbd3b9c1d..afa641feb996 100755 --- a/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html +++ b/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html @@ -1,7 +1,9 @@ --- name: Get Requests -permalink: python/v3/get-requests/ -description: How to download plotly users's public graphs and data with python. +permalink: python/v3/working-with-chart-studio-graphs/ +redirect_from: +- python/v3/get-requests/ +description: How to download Chart Studio users' public graphs and data with Python. layout: base thumbnail: thumbnail/get-requests.jpg language: python/v3 diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.Rmd b/_posts/r/chart-studio/2015-07-30-get-requests.Rmd index ca43727fed0b..9e80ef5d1d37 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.Rmd +++ b/_posts/r/chart-studio/2015-07-30-get-requests.Rmd @@ -1,5 +1,5 @@ --- -description: How to download Chart Studio users' public graphs and data into R. +description: How to download Chart Studio users' public graphs and data into an R session. display_as: chart_studio language: r layout: base diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.md b/_posts/r/chart-studio/2015-07-30-get-requests.md index 572a1fb505c8..41f4b828f47e 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.md +++ b/_posts/r/chart-studio/2015-07-30-get-requests.md @@ -1,5 +1,5 @@ --- -description: How to download Chart Studio users' public graphs and data into R. +description: How to download Chart Studio users' public graphs and data into an R session. display_as: chart_studio language: r layout: base From 1256875917795b6d8169a1db2e3662a03015c5a2 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 14:27:27 -0500 Subject: [PATCH 21/30] remove new to plotly and version check from r/chart-studio files --- .../2015-04-09-static-image_r_index.Rmd | 18 ------ .../2015-04-09-static-image_r_index.md | 23 -------- .../r/chart-studio/2015-07-30-filenames.Rmd | 16 ------ _posts/r/chart-studio/2015-07-30-filenames.md | 23 +------- .../chart-studio/2015-07-30-get-requests.Rmd | 16 ------ .../r/chart-studio/2015-07-30-get-requests.md | 33 ++--------- _posts/r/chart-studio/2015-07-30-privacy.Rmd | 16 ------ _posts/r/chart-studio/2015-07-30-privacy.md | 21 ------- _posts/r/chart-studio/2015-08-10-knitr.Rmd | 16 ------ _posts/r/chart-studio/2015-08-10-knitr.md | 57 ++++++------------- .../2017-07-17-configuration-options.Rmd | 16 ------ .../2017-07-17-configuration-options.md | 21 ------- ...01-17-getting-started-with-chart-studio.md | 3 +- 13 files changed, 26 insertions(+), 253 deletions(-) diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd index 6ced6dc2bd0a..d4bccfdfa4ed 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.Rmd @@ -19,24 +19,6 @@ knitr::opts_chunk$set(message = FALSE, warning=FALSE) Sys.setenv("plotly_username"="RPlotBot") Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` - -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - -```{r} -library(plotly) -packageVersion('plotly') -``` - ### Supported File Formats With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg`/`.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). diff --git a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md index 501cfcec9cf8..3500de963796 100644 --- a/_posts/r/chart-studio/2015-04-09-static-image_r_index.md +++ b/_posts/r/chart-studio/2015-04-09-static-image_r_index.md @@ -15,29 +15,6 @@ thumbnail: thumbnail/png-export.png --- - -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - - -```r -library(plotly) -packageVersion('plotly') -``` - -``` -## [1] '4.9.1' -``` - ### Supported File Formats With the `plotly` R package, you can export graphs you create as static images in the `.png` and/or `.jpg`/`.jpeg` file formats for free using the [Chart Studio web service](https://chart-studio.plot.ly/create/#/). diff --git a/_posts/r/chart-studio/2015-07-30-filenames.Rmd b/_posts/r/chart-studio/2015-07-30-filenames.Rmd index fa85d4d0ca99..357f3ef3d97c 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.Rmd +++ b/_posts/r/chart-studio/2015-07-30-filenames.Rmd @@ -18,22 +18,6 @@ knitr::opts_chunk$set(message = FALSE, warning=FALSE) Sys.setenv("plotly_username"="RPlotBot") Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. -```{r} -library(plotly) -packageVersion('plotly') -``` - ### Save R Plot To Chart Studio Using the `plotly` R package, you can create a Chart Studio figure based on your R chart. Simply pass your chart as a parameter to the `api_create()` function: diff --git a/_posts/r/chart-studio/2015-07-30-filenames.md b/_posts/r/chart-studio/2015-07-30-filenames.md index 0b8bd6a95b1d..06a105c5bf96 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.md +++ b/_posts/r/chart-studio/2015-07-30-filenames.md @@ -14,27 +14,6 @@ thumbnail: thumbnail/horizontal-bar.jpg --- -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - -```r -library(plotly) -packageVersion('plotly') -``` - -``` -## [1] '4.9.1' -``` - ### Save R Plot To Chart Studio Using the `plotly` R package, you can create a Chart Studio figure based on your R chart. Simply pass your chart as a parameter to the `api_create()` function: @@ -46,7 +25,7 @@ p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length) api_create(p) ``` - + ### How To Overwrite An Existing Plot diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.Rmd b/_posts/r/chart-studio/2015-07-30-get-requests.Rmd index 9e80ef5d1d37..5daeee4181fe 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.Rmd +++ b/_posts/r/chart-studio/2015-07-30-get-requests.Rmd @@ -19,22 +19,6 @@ knitr::opts_chunk$set(message = FALSE, warning=FALSE) Sys.setenv("plotly_username"="RPlotBot") Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. -```{r} -library(plotly) -packageVersion('plotly') -``` - ### Download Chart Studio Graphs Into R Sessions Download Chart Studio figures directly into your R session with the `api_download_plot()` function. This takes the `plot_id` of the Chart Studio plot and the `username` of the plot's creator as arguments. diff --git a/_posts/r/chart-studio/2015-07-30-get-requests.md b/_posts/r/chart-studio/2015-07-30-get-requests.md index 41f4b828f47e..5931d4f247c6 100644 --- a/_posts/r/chart-studio/2015-07-30-get-requests.md +++ b/_posts/r/chart-studio/2015-07-30-get-requests.md @@ -15,27 +15,6 @@ thumbnail: thumbnail/hover.jpg --- -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - -```r -library(plotly) -packageVersion('plotly') -``` - -``` -## [1] '4.9.1' -``` - ### Download Chart Studio Graphs Into R Sessions Download Chart Studio figures directly into your R session with the `api_download_plot()` function. This takes the `plot_id` of the Chart Studio plot and the `username` of the plot's creator as arguments. @@ -49,8 +28,8 @@ fig <- api_download_plot("559", "cpsievert") fig ``` -
    - +
    + ### Update The Layout on A Downloaded Graph @@ -64,8 +43,8 @@ p <- layout(fig, title = paste("Modified on ", Sys.time())) p ``` -
    - +
    + ### Adding a Trace to a Subplot Figure @@ -77,8 +56,8 @@ p <- add_lines(fig, x = c(1, 2), y = c(1, 2), xaxis = "x2", yaxis = "y2") p ``` -
    - +
    + ### Reference diff --git a/_posts/r/chart-studio/2015-07-30-privacy.Rmd b/_posts/r/chart-studio/2015-07-30-privacy.Rmd index c83b7f447481..e2a4a3a1baad 100644 --- a/_posts/r/chart-studio/2015-07-30-privacy.Rmd +++ b/_posts/r/chart-studio/2015-07-30-privacy.Rmd @@ -17,22 +17,6 @@ knitr::opts_chunk$set(message = FALSE, warning = FALSE) Sys.setenv("plotly_username"="RPlotBot") Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` - -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. -```{r} -library(plotly) -packageVersion('plotly') -``` - #### Default Privacy The `plotly` R package renders plots entirely **locally** by default. diff --git a/_posts/r/chart-studio/2015-07-30-privacy.md b/_posts/r/chart-studio/2015-07-30-privacy.md index 96fda6933c1d..49b276dc325f 100644 --- a/_posts/r/chart-studio/2015-07-30-privacy.md +++ b/_posts/r/chart-studio/2015-07-30-privacy.md @@ -13,27 +13,6 @@ thumbnail: thumbnail/privacy.jpg --- - -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - -```r -library(plotly) -packageVersion('plotly') -``` - -``` -## [1] '4.9.1' -``` - #### Default Privacy The `plotly` R package renders plots entirely **locally** by default. diff --git a/_posts/r/chart-studio/2015-08-10-knitr.Rmd b/_posts/r/chart-studio/2015-08-10-knitr.Rmd index 8c41cc6c0203..b6b57b181ad9 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.Rmd +++ b/_posts/r/chart-studio/2015-08-10-knitr.Rmd @@ -21,22 +21,6 @@ knitr::opts_chunk$set(message = FALSE) Sys.setenv("plotly_username"="RPlotBot") Sys.setenv("plotly_api_key"="q0lz6r5efr") ``` -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. -```{r} -library(plotly) -packageVersion('plotly') -``` - ### Embedding R Graphs in RMarkdown files If you are creating R charts in an [RMarkdown](http://rmarkdown.rstudio.com/) environment with HTML output (such as RStudio), simply printing a graph you created using the `plotly` R package in a code chunk will result in an interactive HTML graph in the viewer. diff --git a/_posts/r/chart-studio/2015-08-10-knitr.md b/_posts/r/chart-studio/2015-08-10-knitr.md index a803466892ea..8b4ad23ab73d 100644 --- a/_posts/r/chart-studio/2015-08-10-knitr.md +++ b/_posts/r/chart-studio/2015-08-10-knitr.md @@ -17,27 +17,6 @@ thumbnail: thumbnail/ipythonnb.jpg --- -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - -```r -library(plotly) -packageVersion('plotly') -``` - -``` -## [1] '4.9.1' -``` - ### Embedding R Graphs in RMarkdown files If you are creating R charts in an [RMarkdown](http://rmarkdown.rstudio.com/) environment with HTML output (such as RStudio), simply printing a graph you created using the `plotly` R package in a code chunk will result in an interactive HTML graph in the viewer. @@ -51,8 +30,8 @@ p <- plot_ly(economics, x = ~date, y = ~unemploy / pop) p ``` -
    - +
    + Sometimes, you may want to print a _list_ of graphs in an RMarkdown document. @@ -63,10 +42,10 @@ If, for some reason, you don't want to use the [`subplot()` function](https://pl htmltools::tagList(list(p, p)) ``` -
    - -
    - +
    + +
    + Another way to print multiple graphs in an RMarkdown document with the `plotly` R package is by using the [`lapply`](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/lapply) function: @@ -77,12 +56,12 @@ library(plotly) htmltools::tagList(lapply(1:3, function(x) { plot_ly(x = rnorm(10)) })) ``` -
    - -
    - -
    - +
    + +
    + +
    + Alternatively, you can use a `for` loop instead of `lapply`: @@ -97,12 +76,12 @@ for (i in 1:3) { l ``` -
    - -
    - -
    - +
    + +
    + +
    + ### Embedding Chart Studio Graphs in RMarkdown Files diff --git a/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd b/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd index 0095b6738b64..3fe781c677f3 100644 --- a/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd +++ b/_posts/r/chart-studio/2017-07-17-configuration-options.Rmd @@ -15,22 +15,6 @@ output: ```{r, echo = FALSE, message=FALSE} knitr::opts_chunk$set(message = FALSE, warning=FALSE) ``` -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. -```{r} -library(plotly) -packageVersion('plotly') -``` - #### Online Configuration Options Configuration options for graphs created with the `plotly` R package are overridden when those graphs are published to Chart Studio using the `api_create()` function. diff --git a/_posts/r/chart-studio/2017-07-17-configuration-options.md b/_posts/r/chart-studio/2017-07-17-configuration-options.md index 5aa4c1fa8c61..814af85b6217 100644 --- a/_posts/r/chart-studio/2017-07-17-configuration-options.md +++ b/_posts/r/chart-studio/2017-07-17-configuration-options.md @@ -13,27 +13,6 @@ output: --- -### New to Plotly? - -Plotly's R library is free and open source!
    -[Get started](https://plot.ly/r/getting-started/) by downloading the client and [reading the primer](https://plot.ly/r/getting-started/).
    -You can set up Plotly to work in [online](https://plot.ly/r/getting-started/#hosting-graphs-in-your-online-plotly-account) or [offline](https://plot.ly/r/offline/) mode.
    -We also have a quick-reference [cheatsheet](https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf) (new!) to help you get started! - -### Version Check - -Version 4 of Plotly's R package is now [available](https://plot.ly/r/getting-started/#installation)!
    -Check out [this post](http://moderndata.plot.ly/upgrading-to-plotly-4-0-and-above/) for more information on breaking changes and new features available in this version. - -```r -library(plotly) -packageVersion('plotly') -``` - -``` -## [1] '4.9.1' -``` - #### Online Configuration Options Configuration options for graphs created with the `plotly` R package are overridden when those graphs are published to Chart Studio using the `api_create()` function. diff --git a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md index 01f70a3c8a8c..8ebe6c2d649a 100644 --- a/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md +++ b/_posts/r/chart-studio/2020-01-17-getting-started-with-chart-studio.md @@ -19,7 +19,7 @@ output: `plotly` is an R package for creating interactive web-based graphs via the open source JavaScript graphing library [plotly.js](http://plot.ly/javascript). -As of version 2.0 (November 17, 2015), R graphs created with the `plotly` R package are rendered *locally* through the [htmlwidgets](http://www.htmlwidgets.org/) framework. +As of version 2.0 (November 17, 2015), R graphs created with the `plotly` R package are, by default, rendered *locally* through the [htmlwidgets](http://www.htmlwidgets.org/) framework. ## Initialization for Online Plotting @@ -127,4 +127,3 @@ If you're a [Chart Studio Enterprise subscriber](https://plot.ly/settings/subscr api_create(filename = "private-graph", sharing = "private") ``` For more information regarding the privacy of plots published to Chart Studio using the `plotly` R package, please visit [our Chart Studio privacy documentation](https://plot.ly/r/privacy/) - From 029ac97731506c009542eef45e5f620cf538b2d0 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 14:43:55 -0500 Subject: [PATCH 22/30] fixup --- .../get-requests/2015-04-09-get-requests_python_index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html b/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html index afa641feb996..967fc5bbec7a 100755 --- a/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html +++ b/_posts/python-v3/chart-studio/get-requests/2015-04-09-get-requests_python_index.html @@ -1,5 +1,5 @@ --- -name: Get Requests +name: Working With Chart Studio Graphs permalink: python/v3/working-with-chart-studio-graphs/ redirect_from: - python/v3/get-requests/ From 199e1593e1fc1216495b6ae127c45f8e5ddfb452 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 14:55:18 -0500 Subject: [PATCH 23/30] typo fixup --- _posts/r/chart-studio/2015-07-30-filenames.Rmd | 2 +- _posts/r/chart-studio/2015-07-30-filenames.md | 2 +- _posts/r/chart-studio/output.png | Bin 43208 -> 0 bytes 3 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 _posts/r/chart-studio/output.png diff --git a/_posts/r/chart-studio/2015-07-30-filenames.Rmd b/_posts/r/chart-studio/2015-07-30-filenames.Rmd index 357f3ef3d97c..9dd5db3df54f 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.Rmd +++ b/_posts/r/chart-studio/2015-07-30-filenames.Rmd @@ -1,5 +1,5 @@ --- -description: How to update graphs stored Chart Studio with R. +description: How to update graphs stored in Chart Studio with R. display_as: chart_studio language: r layout: base diff --git a/_posts/r/chart-studio/2015-07-30-filenames.md b/_posts/r/chart-studio/2015-07-30-filenames.md index 06a105c5bf96..077fe4188662 100644 --- a/_posts/r/chart-studio/2015-07-30-filenames.md +++ b/_posts/r/chart-studio/2015-07-30-filenames.md @@ -1,5 +1,5 @@ --- -description: How to update graphs stored Chart Studio with R. +description: How to update graphs stored in Chart Studio with R. display_as: chart_studio language: r layout: base diff --git a/_posts/r/chart-studio/output.png b/_posts/r/chart-studio/output.png deleted file mode 100644 index f671b9404c919d72e827c6d471ec7fc4150fb791..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43208 zcmdSBcR1Gl`v=U0jO@L4Hj(W@WG94dLiXM+d!)!F*)EifqO!^!k-aG+mys%UdpNel#>@G&M!}dw%yfoBaI@zP!J@9K>XayLI;wt=yFeDm*USUTZ9h*ca9B zFXWyR%VBbIjX%E~XhKnZXe>wmGVXDV`A>cFmk$_tQfTGm3Ya70_@3OV#kcI=J(1Zk zFuzTJ4o>u?IrO&YD(stjY7`_~UKPdGc?!QB%tcT#5b z|NFCxb2s0MH3<#(|News!Q>hi#er%3`)`=h@w^BBwG#Nf;V?9;`YZDJxc_4pa^ZuL z|K6J%jFvcGZh{#{Bpg#U?En674NGGG`(IV%Fks|sw3y)>|98*ODX^qg|9u!VTzk1N zm{|n#Fy{Zg0I=t(zF=r-a68G*W2&bY@8&l!gzC)-BVMx(ctH2& z%?S)N@R5C<2RIlt)eS2G+hj}UwYVEOu$dBf8Ye!lVz8k>_Z7{>TPryq$=3!S=MZ9R zgefTxKbpEkfIo50_-9+(1&h~?oW17r$U|35Va=l61nimcQ!0U}u<4iA&rRHUd( zrRWL4M!vZtJnm7_2q>F14Uw;X&uoxj^(v0lChD?V8Fa7p`n-l~$Ukfza$-|vSOFuT z6MHF_7^1n`i-}v_txC-7mY9VW8&{&e*Mp8ZUb;M-;^45w-(ao9X|XwS}d^%+fy01s~1SZhe?8x9TD+ zyWf-rGds$(PY&k0!G~A0@;1)ofZMg-fFN` ziTUS;Cfvj30qfUP<@aLE&tS1s*Jb7Nsi>%?ne+mvdC>jk*dHr9Iy#p4W=PbQTg4`{ zzB4yV#KM}(cPTK=5H2zE7T@C`eG(z(?_Y;7@bvVgN9GKYqYRTLO?q(H zoy^wV-Hqc(eYnLHehK%+Z(l9zeBIVGN47S%Cw=zz=y3w+^J#f9iGYI=gKqs-I@i{o zPqwrJ$7LXFelS7AAob|rz+2Y)UjIzTw}oIMJEUCb#mVYk+tuqqmnxhOO=oR$5wrdo zH*8{Jy&`0JIa+N3V#47fs3Nx*A$w)ni=UxU9{S1@arKQtjDh=C>AAVvb;UolYh8C- zA||MR9fOu$TM9WrKN2`W;gRXW+oxh(F;QXQT-G?8E%J%jq&qC(hTtWiJf?gXpVoSs z9V_U3c$;2ACx+5)qP6T}T}iU(!$Ol-kLmqV?Q5bm?`B4@rU({HG%4ONG!Dvuc(mOi zjh~naZ_nRe$pFsQIm7-AJX#E;i|9k(iEM4w&yv0NuL{}TNAK-rTN|&G<@nix^QH9V zLIdmKNK0sfgL+NACDPGQW8mqzvd zd^n?dJrfL=K8sw9clQrf%tSuJsP(=NevB(Vt`Fx-16iJ4HdPEDl&(B|IkgN%O&OXT>Y;hnqGn!Hukwq;k z>{28rF6=5`q!GTYQ@vhF3f6sQ@xeDq>%)%1Y#ha;SD*YuV?d~w z-+YqZN{0m(`tkUSgt2jg@9LMm*@qKv?(a>FQBcr~c9lB$<{O>U`fUvk<{H|uh5LaB z+ohgx)Nu>k0i|)H7zwz8=;6htzrtn?Yb$H}EBDit&9NQlHr>l(`edBp1{VcsA1jlW zh3t71moYJMR)x#Q>o1p+uI*Izn>~`H!~HAQUZ(`nsbYBHeKf#(T8|ia^yC2`!?H>E zMh*-^^D*4gPQABR=vT-4j22&PYp=r*gZp9d2Jyt#bHWrfl}0(vw4B*pGe?WgakXVe z_kw@0l1gMkVDAwgSQtvLEFk~;=fgoLnqgBsjbj75txbAtyPF%)CFr+;S9aog{dEzC zRnXjFZM{!K$=0i~?j);;Uz#Va8#|9J)0t}=W=c+19<%Q% z&T_kYgbOkRJOleq*QsD)ajkP=_#vaRZT#zuiqCRVNEmy zSF!BouN1M`S62Et1wX_lz{wjZ_uS8Hw(+AHVhcK-!p)Wx^4bB^U<|>x54QmxZAf{S z2}PnU{a{eVu+frA=V{8WYTo!-dUmZ`!u#$do9#-JjOaDoebbkRt~@PO7b1z?wrwtU4|I7M7vVz2espWVUVSjzkTOUXhk|K_LrV1dIr$3f<*tFpORbhnBLmAykgVKB1{GLv zDmRzYs;KvkY&S~fO1v}Ue=~aeppJQ#RlzrLN7A(d@o73qKw~f4>3W=v;r$J2utXP( z@o7Upk|iABKI!LG98t37sR|xe0XAg0bq#pP?4)T0{l1uZuhId<5A>ol>}%p|1) z_XU$nnrd=I$SS(2xCeJaYMPbjWvqwK#+8x!t_^x{=xxJR1<&+4VfI}@!fe%TZ(=Gl z!f-UK0GwgTmos3~lMHjh{subw2_x6vcAUM3GiO&_et&({{d9Q%1LLWE^4|9>hFOyf zM+a_0cLOSsQgb#zlc|b2C|<@R)zUz`B) z5N}v8&$^N9Y5)u5%Mm>lIQ4xB65dgp0KB@-*8PVD;xBK;OAy>I=mz0@eszey>w8<% z+Nd;HRh0L^>_t^_D+26OlIk8YC@ADJt)MC`0~DAukGMvZ3qWEPxy>v5*txCc<#cGHjFcV!^7`5fwN)q-{|Bsf5>9QCRw&$0Kk~ws68J zjg`S9jQQc+kY&xNq!GOi@NpCvtL}#Y(Sj1FW#8R3gr&2eSI)>EQ^pt>A1!XS6g>3i z^@)*nH{Agp$Mq=sb`H0ZWfv(rTpTEzVf+=&ZnX}f)LyU?V*=>STvDl3401*J%`?^q zO!s$bZ26|YOTw!+PW;LZc$d}N&joIL%9|Uy{Cr9nJW}FnZ&;jl{_$m0D!96L5l<=I!#o>AY7_Lvsxn^z)-2SzP{>Y907BZx-5W==M!mBC@?eS>1$lCs%F>3- z?cAAsj{9{@RihN>&*hf#|HtAFyTRi9VDZ~vaqWi-HtfXw(Be;T>_|;vYW_}_OZ@xK z&>7qvssf%%k}4*%tiI?wS@YDa-@J9*?qyY-26&vUG!0l8n)BqB2X|!(us(oX zQFHC-fdU=K71g+p-69*c%gHJaPVF5eJ+nS{d=6*0+hCmKcHT9uout$`s?i{1@ij_S z^L87E2+xD{k$wY9!I8jZ#ihd{GlozOs`-3^!rdqbbjJGsunU_|E`IBm5E{tV+4LSg z8E3aDHYAKQXq-leJi0dvghGDz`Wn|Tu%IEB!^!s z%Hh_t&2phNlmqs)01^&h4}$An&b*L4u$5i2S*AW;Fzz>RXrD%&=avezx}=Lw^w#Ca z;`?(6S&!p2R$b6lyWXP%!MALn9rq2)vQCJ6Ee+d{>?i{+iu(w|7840)kW;0?-~bU_ z(870z5j@#Smua&wle8Ds_#cid)a(}M)-E!W6$4_}n;noPK2R{+x>TnPY#6VqQv#3n z#xH7_-^@fv#7ln|hPJOBOulVaGGZ z$9F*0+KsMiaeO3BWw}Lluvo2|D1?Ilf$d*l?9REx-@uzEFpS?##^JDkLT;5H&i!_;T7h|gH z_zj=nk?{krU;*DQ1FD@2xKH$>bKjCdr+4yG5 z`=*hm33pQpKHqV$B&P`^O3h!b?Klp&B#ArL7Dgd_K5*CC+vR}ME@E~~KVWS|(U1w; z&p`_p^t6Mm{Lse+$P!NNT~E&kEa2mhpQVVuoYt|Z_yGXROCql}432L9!Y%FQnrtQt z&NYi1t$fn;Ch&0T_SrJ?H{el3Q4LN7HxTudd%I@@yoktEAr-NBaP1Bx1x;T;P<$Tz zq;YXvQ(pdlZUvwc)A6rt=46RZvgtr7g{H~`{;cjgp@;2R){w6Iw z0D1>&5__*df!xc{nTSx)V(v%LG^I9<+JGApP|0h?z6H#I*)VwHo-bRA*S6!cXQ_d1 z{SfZ|`lTPW$+yY6n45mHQ=PX(vFexT?pGvIree^R2}In}2d@iM`jJw~9h%u~gGgVU zLW2+xHjh#`PFc~n7vBD)r@lN?jtg|cU?uUJ%jy$f{jpW|ihq+;A+5Gg2VwL>pbuqJ z2hR=$*SZz^DuGcue}kF=?t%wLd{s-mf1(C_Ln~`D7X0`79E=|yf(~MxghICn-4KU? z?*==c^kq3XIPod3-?i?x^{8~nac1PC>+I?DaP|ddLJe_)8oXsQcB2&`uHove5c))8o=vnnK*ZNQf?h+fe*aj2A6Oeugp z=V%6NLvUox7vbyVvk`n3-gXES(AAQZ(sSi_Y=Zz=6CFqzX8nhh^e*i#V1*(YQe0 zw2MJl@09tfqoH1_y2(afRt7j_wSL8XX^-M%b;y7Zn-cQG-B*f-%2h4#On6q{il)n&~R*B2lbtm++2j zo86T%<}0a!dUg{P)U_M6w2zB7toBe)gQ^4gMnSTET(5O9Ari|%p)jmC>ed3HO)e zGF|+K33YU+Lhg{jt;Z~6i@SRuk|aja?nI{o5~=KyUvML)_YiXLSI6lls2*Ll_|~I2 zfEkqFeyXhzdw?>bYy7xm;&rlO+U)Q9D)X*&*_=PxgobGhsB$wciDpD%%Y3 zym{M7n#lT*U!%HdF*Lf77biMr> z4pX1BIqsA+7`X0iB2xx!34up?J+P@P>_>8_4Dn5C^dN1u3*Y}8M$q_fJj}lG16dd3 zCNPJLolMyuSkCb>$W~M8bTj8~HJ_b}jP!YJ36Ps+aE!&TvzKz>GQfQRrclmtE+2h~ za=>u=MGPwDgUQT2LQ)AfC_djIo_cQP>zKZiN%#477w|0WJQLoGkNE3fUa}T|$`OFe zf1u&&!=M0#BCXH1I{7N`F;pCKfIL9=YZT>xaV!sJ&@Xn3LvV=WnYSVpfJ0}Ak8)fD z>~i{yR$XYnbjE?j$4kCn%0>RPH%`{R7ldyRA4v4W>oWzv;P;rcND{=DDW13Z;@huI zE1F+E%`gmAqt;ztqJ9G2d1i8KKMW+mU8+sg*)8eg+vrP^0!D)un*&q@j*gWr5!7F^ zqm?2X<DA_4geH+iwJVANT?f2Q~kaZ6t?}EPvM>Wq6zO^?Uiuc+GK3%+vBEhPE zFrPrE625Ieui!rY8ASu*A*3Nix55nY@DRHAHPNz=cX?JE^;)|?`FQzy==!;Ioy_Ig zeul6eA?SuQnj-;+NPROTNcD+inG>)v>lx}Nd@b=lgwsp z5J$E@oh&|@nKf!$P9Cs>Q`wn1SH;wgeR%SHBeADW*Zg&LzZR?$=RhX#aQ^&gu8YFJ zH2k$*=|ZZ(eff|OS;oN43SB?x{eEHlu_A(cpN$nx-a{prHmI&hD2ni|KmAuE_|7r@ zst}QFYTaG8<|$jBlOkYO&_}cG9027DVSx`u9ViDA#h*XBmQb&*>lv?bf}{WH(R7=s zry!C!ATH9%3&BgQuC*3G42tq*kbDOR%(92o!zN^%F06HaPUAT#1$*|zL z=3u{H>%~ol8{#wGW84RwaWoOvTh2z|iBiJCWD!>gZZ-IBwH5RyBLRM9Yjz(pZ@?%p zH;n}m#Pn+!V-fyZYgHw$yn{k=h4+{%e#Rlo)0C&XKXx_k^Yl2IaX&S{K(=6{Huk*( znwi8fbUIHvoJon7w_wV+2k%-gXlv#|;EMUHOH1?3r`rl!U*Bte^f_45-Z}L;Ioj)D zTKpEp)cH~^;*vvYc9&s>EPfH6}d0ABS-I~&+ zA`X;gHt1g_8B9EjJD)gwZNa@)s?RS#33j<7O}@vL-O*#~K31f08X{a9gCqTGtzd1k zf-T@+O+K7)Lgbr91u>Km`29^nE*pIe4R_xkUHNHXAf_-|Xf%SDKTZ{+plQ!Dk3ABj z{MP2>v~WqVKJP-Q1*|BWRF`-V3#wbM_o*z^g}X7^p4|YuhIlmyZ|2%*V_*9 z0RXnB8AcedXJn>FYRd7FsP%2rp%>t8KW^Ug2yTdstNo*0{t$yh z5FtfutzjB3aHZrgEkHFt!tr6M?XhYrb$D~YPsbg&=gEa>b3|WnZ(F%#`*5{`uG`eF z`HvAzY!gtsXzqL)aeOeQm7JCq=`|>cT{9cNTUk{V{HgP;YW@QdNC&0iOU_=Bi>9*~ z9~|z{3IFg+GK!d^@7fo)u}a=k{-}wcSB0mild@Msf*h_Nd3751sXgZClNRWEhWIuL z2Y@RZsai;lCMg#}a40`QY$$`By`_`*ssN(^F+h6{m62`!1lycj&Yyh&8O-mdR$9d2 zb)!SAb)3~|b7Nz7^_uy7j`2Fg|9`iB*`fBN<^=G$Gej|)1vkLrsU!u0X7xYtZAQXg<*@O-P{Nk}do>aJ5 z`4Y6Q`UX*<^%V>OHOn;}A!pAgO|3U&?mf(1q+HxMR}oyOw5{FgI=j=8C`qQpM839n zcTuK-)M7g>mHJ&`de}gn@O_R(t?OXvfR2c9L%A@e&d`Tk*{#51D!EO!933*G$}vD4 z|DL%wpw=QVS-U)#>6df^exVJ?9j0dy+f%6Jn{k;c;fz;&jykQky|1rW`a1`1C*WKsXGfox$oh`Iw%LshH8g-A^_$@TX{DV z4v>bDnvtY{i#`z`H{}Kn?nM;5E?$32PIJ_FCUoEUk87Nqa62Qi!#sv~T zq1HVQzWmz0y?swTwczg>y;Cm0K++KB%vv^R(`x0dXijSh4bxSz3MH zQ-slqK;O*NXHZ}mbbVb;<{CCjXf~cR>p?oc@)WrV@b{@&N^o*mJIri0t9nHQ@ZOyD0x|MWf#FB$2>#Mb_OAvqF-%}tQyFy!ypU~YyuQ<& z)(%z$KnCs%EH~@}Hqp$jr=~stxDa7&B@t(eJR_OW#&_qaSjn4POYK! z9iuZWMzdN%pBtkPrvmX|uu)ec`9FI0JI34hI#L&NZnt)zdi*UYK{%{hP;w$*p4Ulc zvCHnGSp`gBw(@%+w(Hn{te_>n2EXI|zMERsj$)Q;GJ5lh=-yWbv%A+srxL;(zhhz5 z7ll{!^QC(h+koaegMnAEN4V#t1)g_Qgw{j^%lz$RA*U04>FRmmXQ?XgfSIM9tC4xF z!-XaMif8T17uH30HJZ1`a`J2h#o{ktf~LAIN_qhG<|ivxFNxi+A#SXEBXbu;L~7+y zDnfz?W1YqX%opsCO*2N%e>A{jUe#4^s0#E#1%JWP9{pw$Lh4@EJ*n@F)6{u=Pv1>C zDA)`#%qPpQG);0sp-BbIiCSAx=&-J5P9 z3B_|$j{-zr&kty)``?^8y9QY6>sp7t0k97%nw=&$ffxPictnZ(%>_Ng4C1h`N@nRQ z?#aF_srkmi*5}N}US&IXYriqN7*0t8=y3=Uq`7|GYLXB2_v3uY&e;)>a&!+6zersL zEOa`rVmw!RHeax8h43PSBQV?2<$)1;W(!c0g3>%L#Do8KZ?6a7C^K&4V*v6)idgO3 z%sP3`C617uTWQE6wyEIa3c@vJ?y&jpWcw9MIi49+m@D=W4oOTuR&7A@E z?E4^G{~QCTOBi0r(G4ns zMfW41MFEzZ%j`Q^`7z`Fljl{&=Sx;^C!;yL+na+#AeCtr9?!iCjxp-12?%88qx}+} zXLT$%!ZjQm)-Awu%_3mC?6ds+d;+kn%Pn~Y9v~wbdRdu10I}5&#H*%5#w(^m+xXMGO%z4oVu~bhnQ7 ztFjS|!OsTXcOJPUzJAqHU*J0{OG!hah3+3A;5ORFMskNP17r|8_)YT#EC4jGOU_bV zMJEGYw~IaFU_erRC%bCw82}<*4h{RfFnUT1KFM{WW}PrVS}rbn3w$h(f!kIZcz zr;@KFXrU=>Z{)x!Smp&|z`8uJ0m}u5@)nnxRfQFE<~t?t6^A;v9@mHmC?E9=Kt#{s zC%o)BaQaV_4bh;L&NO#M4`meld*V5|yfPmM>4Dy6W~7zZ*JJ|qiW(zI7gW`{=+=bE z#2|h@+TF7yl}HV91;s5t#7RQ!1@0cTIWBqf0v83!Uz=O#ZL+O-Co^=k{r{ilh zDxf|+wFzW$Y=;uP>sTQ4e+2#9T5j>Hi5Jxxn@9;?Y^-`KbfO+Jq^F%Kjzk$NSP`(( z8MPq%b;T!$KW$ydUDL7d{+(2vldk;H!zqKIgRIsx*QJyx2wy4;wY=CSm30`i`;oZ z|G>YE*LIwX!AlQjK7SZSSf~3qkDe_EZ1P)I7-bG5A+Uo;HRerLtCb&b{QN%Jaq%YR zBc>z$zIT35RaZNlQui&!0LB%q^ljwvhM>(J)$E^)YL_n$$nk@C6qtbF`$vM~pES%4s?0?rpE(JW7QZR3#WpDTdXJ71@7XzX~~Vp#cjiPC+*Syb5-2 zJ^}SlW6ko9ansq{swqfxx3D)8Sb_=Iug;0nM2lma0r$(qDzcr=m5f}&{8vkgwjU+K zMU~{MU>ty{2c4NbLCCB~DlteUlEc3L(_KxQ#nX2Nr#3l3w<(XB%6TqIc1S?M!3ZN~CgkwU)3YIEhfaGd7zfyrKXtuECWZz|i@xwZg(zh)#H=?M{pEt?@ z-G3o-PIn!vzGXkI37H%A8l`r@-iqpx{D)K||3&xl*iA8uvuQdRu?Q*Ak8XkH-2-pp zvbm$_`dQgLBD;>5)loLD8uG)tJws zF6Hqzl3_FDVKk1eNp)j)*+t;Y;Na-tHZ{!z3tg^8oju|PGy#5cSSgfrAa5Bj+Co?0G|gzoA7uA8zSh?N;XFg zpyyezwqqxblS^m#s+7~0uvLkh<9vlPyR8DWOO=$}_b&IJUKc$4=>vGx7^Q-G$)*!l ztN{1@IGM}e(ISEe><$PtbN-SJCCg!9o(bH5#8)IYGMulP)V)3dnHel2YXq|@Llz1u+`(rm+ZeAlGH z6=U&9V1Ih(T~X1gKqmx1>2IwHFN=X9M`57a&+c5D`i2u0By1UdgB+GEO~?utrFjf9 zOOZ2lRen)7<|*wxqylbPw$0ig9BPAM^1^*G>dL#^po9C_p z(mxXkGIkG@KbLA_xh2&1pRV67kV9M>{q`$UbsK-eGr^S>*y|YUN^TRR1k7Q?z5_%g zRs-pQLO>|h?crFd(D1}-ssb60$peTog&EWn#W3_S*-sz~Hi@rYC)!zR(ndVj&Tk-I z-VKfuM?|_w@(ad;cXJ@|8oH0?ee^&x5s0R={+&`KH*(@J0X9^M{CeUsugVQ5zD)*% zM2Rlh*>?SZsG%#M=EsokeGi^^s^Vll?@GB@vxagoQ-ehWp%nlr4Emy!9!`pWtoWS z<~LBd1(b%#RV#IljC#feS-wXMR`R6=0~CGGH=tv|5>@^fc$GWr2_#jSdz%w0uv*Y3 zxh^IS>8eT--9}b4gZYZC6+yX4)N^|hsQNU^)?cy0M#yP?zsph2VKC%8+!#{xqqaZE zjk+zJAu(2?>c#eZEg`QHeYdtc^9zMhm!&hrWj5NUfg-SdY1z=M7IOUuhe-+LKl{k>4t7^E)!7Wv;ARix z%_FXXh|gz!m@5Gy{wJDBY*LBv*36i=4mw}UPdSOqcE}p|JHjHO-aUYLfg}(h=_gTH zp-1EtOznD$vk_;Fr7BnBnkx%Kkxrkh6=atrkP{>v2fQrPr7<(m0<3F8FfsIZ%t zCqoh&WmT}pJ%eg;I6(&1`n90cdSz?@JGSMHBf#-b7QS)iM0Oj?MzVkNJB?id?@1+(9(b zySL%Ha&Ew&six5axiMUkPHN!xk4YunCgs$Uw2PACD7JX^_5=SVny;cmOe5F`Q#=9h2 z&g{hO=te8QN-z0$BagNFeq{_FMd|Y+2%a*WCd7wrRwd`=CM;RIic!GBh&N&zdYGg37x#^hIG|GT+ z{BD;=f$yA)qHRRlm0^X2g{o?5d!NX%Wig8cct0J7x^@`RIQV&VE7{*IeJ$JBVHv%o z;}Aqljx9Y)DvCa(pgQ})t0liA*`Mmi<>jPb&zC>Aff2IF(3j+hX2USO$EW2#_ncm| z?A7wVp#P;HFHctDzoY0G!xeJ%+4+KYZp)E%Q0s8v- zrb&KexH-|S+Y1HV*%h!n00gtvUu6XCE7^N#>g_zaDMpF|(dNwS9OFkHtqLKzCzLfI zs_<}3EZT>9VTOE-r43s0K#h2nwS}uNGcgws78Yv$81L6fzKiVU&JJ_^XV--ZTi0pSV_!nlwHed<77EHp`j`5!85T|S%S=a##C zqM%hP8UBy5#jkHJWTrG#s8ctej*O>(z-C)SDoB|Iw65>fRtxKkJx&{VZj)k9vg{SP z#99^E()CIw--*hX_9a_5Lm<)OpV4ua=^N-V?;O7z6Q!h)QXbaKHnh&5m;h4!-7&R3 zkFsidP{;&*#SW4RPz---b#JpOx^ApF(r8de+bY>|hJ1LOg_7oLWYMkm`({<`>f29;seTtW z6T`E(c-~tI){n#ck@}BDa5yvI@i-~I%Ch_09A|q2Lo9Ud1TAGW+YM6Frzp`U%HfQd zdWQ}K;U`WA3n1^&)}cI4xj{)Y{>VH~#n9TG>BSiBaqFDy$NiJXzXh)#p8o4*@;0=wCvi%9sT|Gt;> z`5?zolu3PVB6h(0nD1&dvG@h;uFv)$#rwoj=k3a!{mmQQPmcgWWd&%QHw@3^CZwdt zsk=}P8eH!YkLq+!i5;xwo7=BZOF3QBcbZuoJz`@6gDGv->|CHg6 z1sI6`Xu^7x!=d?~(X`eDf(Ah#q?Pd7oaVIo5g#4oM5<+#OhP0&OGX3&-rn7@o!oC; z`u=&Jt;I{CC$`rf^1SLXrcn!jt0z$=8d*2?b=Yy0+N;=?Wu%SSXn=#Lzxevh!=;z( zC@@ul`nq*?*SSEB2n&w=B|7YkrI+dDndPrND9mY&yq~6|r1AZ9^sgE#@C|)|+yoE( zIBh%1;XhgCk!w<8ehQV(k2cK&`BX@ivR_UMg(ykaHB9UE7(UD7LO#!gZ%r~)LJKMb zq#t6Hl-qEotnaUqOHaC`WxGYNT$jwHtVnKxgIu4k4dvkD_uez1PPf$k zk!xJgSDw7u-r~1FT5V-}pRjW14aI9S^0ns+tMisXJ~PDhncvnI5>%TW^2nAb(EBntiKp zWw=tU`pFMT1?F9P^K`#X!Ene=+l|IIJ)<6f2c@+#tzW691h@9(lkG}R)Io={&|isza1HaWg^XQ7nBa-`~N;$DVvm zN--X6uPIkz4pI9lP=}+>&{{G!FJ37Uj9^S;0?1eH7NW@78s@U6tGCLPGUijf}i9i>oPr1)Y_l6^Iy7KEE7DBS3!13Ob^ zw^y0R{JVWvuGI@FV8+{oyKW#IZ06woz|{m@iVCY8%N-N%6Aqbv5J5PC5uLW%-kjr> zfxRdiU(7Z-bCEE6^byQIglTk&8{=SPA{J*0_facEb&}0ZE&b$I;Xqw3>W9m40}EEg znOb*%&Vew7%D0>TwlvmJh^a4Tz6hdHaL-D!Z#;l%F9wk@3p8`;iOx@Yd+0O+Rc^w3nXB+9>yRZiU|4G`jx{33Ui{gw5XI|RzSJ2?kbK8K|o_1Wrsh0I0 zi2l+7upvC;$cX#ks+$ zkbNg!_f+JMN6v%83B8a73)*H;yK%+hFDe+m!T@juCFn1yPqnR-zLJ?C^U}&9Z}pxv zK2|`X=>AAV$!YZpLC z1*RTt6-jfaxZPPIsDItbssJW++gaP=CGY+v(Apo|9`HEQqvG<(fthi;+F@I5dy5_P zGT3e3OE5hNg9OR z$|JgN3xQymMCI%Gwl2p_U^OTEGuQ74#y3e}d}hhl_$r?%Z6oLa7+f(jge**Hwh7qVR(u^odi@~C`K*Zg@91Ka z(+=8ikK?Z7-H{UuP8wjcCc|NX9%Y_h?~fVoUvX^3I*s+V*jZoRg<~On_AZ95)@$cu zgMsj?pqw4V_+tiKAD%#;$I(^N2RhUh=At@`L&S?Yc z<;<%B3B9cCO(jgc{9Qg|>9+>eTIzi;Ky%Myo)~atD*fo7LxN2X=!knbCL?z}`PPwM z1_dw6P$vJ;#l09gXNrW)gcfaTlc4+Sa4ZDPeIs={>CIuOGnVEqkTVcLm%ul)u9d{K z#x;i;l5AFtYhQSFjj*AMv` zJ*UV$e9qB(@r)Q6<%(Q;sC z3qY1jVsGd&*#2AI1r3U?TXZGYEWf}~B?fhv{HS9AmKS?;ntkx_%asr_uY>omBfy(Y- zc4C$+7OY=O&H~-QLOBEQl?3dH7KlCVr2)fmFbX<$0X`<~(XD}OD+sJyF-*J9v)Xh> z+k!bAL-=i#VX&Ra_4xTtE+EMho-yP`qIq!^KmLP^J-wOmTVbib-B4{L17RQ0G2L?} zt|dn9VFg08sCPN7zup~M4TD+Jy2~ddP<+3~sC)k#1RyTlMViu~ifLx7ukqn>McxN_ zP{5g+y^uSi;DncgTAs5w^3RWf5B{mT>}4a_G1=#IJ7&>&dTuVd^6tytPmmOt#Agei zgh_KZ_#E;8nbdwWf2Ja|ve8{`^EEMC~e6g@IXQ3!q7A4%Ojk z5Wcb(TsT)|WPPmh>|77$!X$ErxfXi2LKh9vGRjLiEHjm_i#PiuriN z@|UFOZ+#io&GIX3e|+Nz=$Sw*%s=R)1jehQwbP0YUJzpEsu-J{wa@Vo!G!Ub4#W!#wbYj?oMSw0H)75rP? z&~zpWhI;O4Xb^henUMnAK0j;1*Qy5_jL<0DDPcPG@5;F#MFO+N$odi5OcIN^SrrDG zx#89uMdLpw0bTn*|4+G#4wyfR27~W@7BTwD;GjpA_Yep}g%BZ-zpblJ+AH-AEOb)@$G70QIonD2TE zaNabS*}j~~14ggnYvCfT1fYfUkln3s`AwZYY>L=eEHbU&v#AT{=qTSOYq>06^O6R2 z+ECWC0FbN&-p`M=*~|V2B&{qUw#Z%4OR6qtIsyrNbnJ|Q+3)e_Ix4(_jO4vY31DEI=Tf=WrA|5HMcog1HMY2a_Qx zK?SB!VKjX&HK8&8v}+%>1!Q9yX?S-5L#;0hai!w5?<8Rv=(!>Oqs z6#r&?Jl1}iZ*@VufY&976GUdXd)P)T3IkrfHe2F*H9!Kp4~H5T?Ea{Yj6Z|#4fsDw z@_wYyH@u|uAPNlXJMtor3ylP1tvB=_#P3H(SvL;8&=t$~TK zQ0$7AAlj(IUX{{u-sBF)ZPkcu1DL3#8q1gY3iMYKvQ3yEJS-q4&Z(~W zIO?n?k*}q){tN5{HL3ooyr>1#tq_<$1+zCleDJfSK=$O$$^zZI`SPjl-w13;Z=OB%$S-O!7%qmMRfw&v=Ou~v zKqX@ZM(=Jo-P3b=WC=Prbd-X+{ro7e?m(RnHb?TSzfr4AT9zAUEdIU~bsF}cazaHg zow&PF($|f*;>r$PN^q2V4ur%(^@KqHo&!x44G)t9&}ltYO#4 zf!M1!)$+?I_ll;drT=#(I>B#S@v|0xej|k3Kr3b3t#DU)VjoZW+-K)MIz+()u*B)_ zDp+{b)#UeFbAD6GP!i}|;h%`@Ql*P^DooVKZh<$DS9$mkh!=4!7!bEmU_;VA&3gI> zn$Fze5(T1WVBteC2Ku+=|D3D&@wUDo(Ch3wk2vHX^La5mAfDVy{(#8&2`8H89OBzg zXn9r`RoQUb1DLnjpY`mfS@#sE&q)+meaSS( zH5|b@6q3jZ+Tz(jXuz9ZHAN-5|19bO|iFr0$sN*=L{sy&vwU{cL@lbFMjmqu%k3 zcgQ8fOu)qMY*OPp*?@}W2!vN&zFbASxiBbsHNtKrUc^51&6|k>?EZRZg z{C=7RLYpd4>cw;WyzF$2daM49b_l3%(NGsI#jbx9T+UVih*3wlfW4zb;f99B>7L%+ zcBjArbA(E`u%csf!QS-II0sn%Fo_lPr~W~Lt+MMxr$?B{;khme+Zf6b~|OWKpT-;6<*pS2W8zWimh=cwiU zI$0(`|LH7OYG5S41(H9s{~WAQD%J}OWcvuDQQ5BRMloWbyYdlqR~jyrUVDJutlI@- z@=5Op!N*h6^o4T$J7QA_8CM?$N=Xj=YL63|Y-UcXv+oo~y*4sx46b(^)SvZt_)_=# zm27nd1GzA$PV7q&!8z(E{JS#60KZb5QBoGYdp{UBmM`POJxnrxIsZD^1Ip&r{QiDO zCiEGNlJwgWR_h)9%T$^CIdF>SPkI!b%a3uC!)-X};1X8_UBy5;@n2^M8vjnL=$=f9 ziSd{A!B5dIcZxr0ORkgeNaovdznR&DHxD3_KS|L!YNGMU_DJ&3LJO1Ll1jf@Hl13W zHg4Nd#&WpcP=Jt-aEeLzgZ(aQPJ{p-7T9KMRuu#NIJIO#9tz!IsX_ zT|eBJ6rPQ@SGC=m>rTaN&#o;`hDbKll1T(W|!c_$uT)7u1e< zEG^FU!B5_;_-15;b;yVz<8M{KyrdfW2iQhVd&$iU2lmxR-(+W3#bowURml`V|87hd zx3Pu6`Qagc#eoZjhUS}rXDiZro(G#Hiv_K!HWH`($L2GV8oY3h z(<>24?2H|snwol64ZQqst&iLF-?a9+N3ipBdOU9+5(@gRyhn1m8-2%`0ynxaGzN36Hg3Rwky^&yzdZ=_rAkUtt(_V81a zJUC-!W`+^^`FFHs;^=1pTV8#8iP>vsz7{NY;%@h#H*s5>;I%x3)TJC zu^9G>tJs1*{iuq9SGyNu%#EQ5rPm$4V1%In6Hk1HNS7D5dFS;Z0Z^g z!q++WNl{-_e+`)$NK|WiMnV%na>=kDlm9db=McSnUbBj;-{3Y8wE1?U6Rhdapf-?M z{+%$+`lkUqygqM;eH8>nKr`U0{c$e2;;7Bk`sM{(;6u|LyF*!a{ZKK6L!a8d{bkbv zx(=`Rb8(og@7Cpl1}UUrq+u=(8fXO@`Tv@(0Uqo4X@zXYC%(3A36JZV@!4a)TpMpXUEH01XEbE}8TbjX0j`@|B8V&4?|hASr>OmDcukN6KY z@%uiai1Q$EF&i1N5*E8d{y`zR^?Pp4kark&)>f6S-tY3Xlc0+2(W6N!=++Knuo@gL-m$|(s+0Q{kKjAM#4{v>kfE& z+Oh}j?hW_49Cm;1DCb!XMvow?EMq8yeh+m zp(QK^B0cKE!lf2eC(4d@OCBl?0ju;Ouu3nkh+aPrHFYEAbC^CSpI(6d_rtqPT_*m< zNv6>$5BDTMl#I3)e}>+_amM$e;AF#Z)yf8%#Yb4Q{$$Uaz>oUo+PhNLJp z*TTQtwMgBXMP48lK1KI9e~a^=-R%E*wC$~=mQQhpciQy$qi{!hUR?sy|2xEE|78qe z3&NDnPL!9qEdC@NsrM7SGMz7FHr!TkD=yfP3@={32&DeU!ua-g7@;7gp%!Eea$-eQ z0sjFF9d9TCeg9^T>ipvUO(mtq0w>B|c1wVbfLe%Ji*ciq;59f?AAkgoK&E}=ScPT*Xysls8y=luE5s2bVc`EUz zmAS+`nJ0BSZ3%KOnolxXb|xTb{@z+6=JrznyPSbpL)DZ1@oc_*J#>x(7~CP1_fCi% zt9E-ZcVJlX5zea&r**V^VP%tz$QRLFx=g9)^a$vm#Gq7vZ7$Kc&cY0-lnFSj->h%h zni;eUknVij4g5jg#HI0pgwWWdCSozcLIB(1&gS;scUucD$d@!*;xsXYu{)$lFBksQ zF6$ex+Sfm;bE0eq>HTZ~!(M~q5Vd@C!(f)FtW3UK01-7)q`$yZJAl4dGE0s~YekI^ zbpLmPiu7im#Cg`PQz7&4nv7Y?Im~9m3v7H^7#Q^qxq__B!^Sm8R93Fhd2@Mijug=z zfA2n*J>?2hHbtEia_LNUVjQ#}SIDr8DG{9MIIFw;5VTpoqe}4pi=F>8u;E;Ni#swV zg~XBn%p82NK@L-NwNmOZz}jadHJ=4(CkJ>!{rL*U*${P{KlP`@6_7Cl-0?gNl17P5 z>#pw|ZW~2J$s&VQfE{R+Zu@>(5&fmI3Te;z0aXQ+aSY4*cAT?Ye1BBFyf{lW4?W%25YLZ!%$cUg zaj&rsd{+C-$)~b0GeTyvCa!vGLbSHi_`vW`1{={XJpIgGq*C!uPtL*#qLL6xFebb} zc7b<336iJ1=}1oA0(oMe>o&EZOKMejkAT~fh0kG3fwn`L{4 zui=COrL{@0Iy(utf$MMAagZ@>1f8neplh`4pPBXEq!0+gWta1>gYe++VcAc>ebu(j zm)%Xjy}tzS>Q{Z;-2i27K8v6LOOM^lT`&FPgSbr7TK|&PI^=LcwiY`DGNmU=2IK*VcgiH*ey6mqylG_2Pl z99`G}Vg+E_%RAqV698pa+1FpKSM%m-d;K~jW$?vSM0^LvBkj?{;pL>|e9;|K%=XNt z-fW<{peiD&0%AR<-c1|MyoGGUCi?v+b=&w*uy8-Tssh6djzip#qdmoYV7kc6$Qq}N zNteK`cmRnC?zk5<(^+cL7q$1#ADo-R{RA;%!^J5EWtIEvOTYM@h52rG{v4bwxki8O zt1vHwE?u@Ef~tf_j#KXa&7H?UAi5*}oD5bh2k zu7qrfaJMhA{S+KH+7Z+$YU#l-Vga<0EDD)!ld9c(-~@}_4K9D z(}cH@l|})D34-x8slOsUyVTLO;XscWA7gjY-$t`qw@tT~R!Cd_Qyps6M+ob^1p<0) znkV`@v|h)c4>;uBHH@f@O@{NSJf}>h2Fw?)p>>ie*)5Es*r?(*JFfJ}4WmB-n3(@e z!=hocIEyonw9;@be#R}zI?FepHzg&&)eU~7se08Z|;nq0`HFGA}7y?s0RI> zJ8BDz^S`^GXZ*G)Treq73S_V4BHAYqRRpBegP{)I{es6NFMYtjUnFr=;97Vq#z--? zTAk~&IKZ{^r%8*J;!k5e{VNZ^Sii9yW|PWc!8)WoxqmV#;^l>?7rv%pVdN5+3&(L_ zaEz*LHr?s+GM7RZcHUS2Ir_chsT3Lh1CVx_hYpP@v3f zbuUXzEMojEq(K&22(3en!*Tm2NFt$Bi@14l*-rcd+G7cJ-sG=B(42V9W0-LH%kQ{o zmr;=xZn9KRp|3i5mO}17TmXyMKXafzz5E1!3)CBu1BZyiC~TSosNV5rET*&tLr7Oy zf36;6+2C)UUZl$mBo;%p%wAuM$$WPjY6Z%iFH0_FzppXHEY4`iFTEC2MQ=yVH;O}ux$0OZ6Bm~?5K!VLMue$a{I^yBJt zg#RCz&B8eNRS1Q+JkKuUk2DE>H$xM2q0Ry!{}Uz6k9S1i0Zw?oE!ZJOR8XM~13>9N zlAywZzZK^AvhItXy&INtm4xOjl{XJwneh6bYCf)_eZsg`c<6d?y8*;wP}~&i{MM8J zjUy!Dho(kmYAbFU^fg1$a#|P>@H#eI-wYWAQ2>XDAv{|EN%>@EI0|&iM0eG6`^X8E zl3QggMO;;aABGzZ&S30_qP;&6xv)TD=lgu5Sz2qh1G-<2z`oC5MW)>UvWYCNs8hhT zy=EG`8PhRq*P&A$C($%RRzQRocL0gw_e)0l*YD^X&rJv|sVmWQcyk$GL1e&yGU{O? zrWSHGRuB87mroOBpR^!=oy^j{6r26*U!CSxT%jr{CiYK;uEhSHg}@c}+P(ajJ=Xe% z%vw1~`5lcM=OE#QvGf)O83Io;8DYF{XXYkWeYbBM&mF z7kCMFgb+cys%zET(;>I-(ybnjzR_fzayAh>{Q;SuFnRH4zY;iXK<&^CM-+kUT$Y~h zTXD$+%01{{sQqnrpBQRcSOf-8xQ4_IwsZa0#CSkK7=ago${=0%OONiSTe1u`w3L79 zn6SXJu2M}WQ%{F+(S68{>G~n@ubE@l6}|a3hv^o$wcF1dN4VkZpyYP9D*ljj>PSC@t5<2!J(i`ef+*%8Z>rK zr}RsccgZHV)-EG7lfU7*jjpG=wG@)0hu9*eKk`$H$6Y?-5Lq)3N7==RoBZ^GuszG`b1JWPyc(e%xwN%Z=_%SjrEw;0z%geY`StHZ}?0 z%!bO@gZ;lrR^@ni*#|IEIYcZ;f&LYG7aDK~r@A~K#C1>g04B}_vNSoRm0Zd*!2wae zs@SL4N{U(*XAQqdZDJ}nloHl%3Dqe&xcb(z4-4O&AD#Ja^vO_1K3c;+@NI6r+?dy_ z3y@;RV+lY-){UOLCh(Z;5IX7P>SlZaI*Y0nZ^GlI@R$Wpzd{^#{M5~eR)o9y#@&ju zt*v#nL(mwJfr>x=iEu~X_(MV5)#T9x4HUNYNCcIKw9tRuI;aogXrhWkw5vJO;oP1)Pr?)!VYG+ikDLEcv1+IJH z$1KZZBgA=)jh+nA-^bg1YtD5O@)-Qv$sa{wjyZ%^w3G7?S8d93x!`!>* zG$uLUFUa|ZF`&t$OR~Nan6A_MM00Fi)0cPE67S6vGsGJqQJ9eu&jFhGq?K7Y;+B@U?kK@B>^=VTqZ(?A!(PUtlt3}L%R`ewe+Iz3^pxm+~HH#6@+JQ@+CWe zN_EKoDKI{GEa%U4&j0l}v8TKS%t7F$@;P~PPGEsp>NB^)|A?Y8xh-WB(%}PVhmn*^ zhe9cA9GC1D6$uU{UYWB8AfB#451u1Zd`E8@Ft+j*GvEdUkW7`v5*rc3Vx3TV5}5xt z{v}&cwpTQI46;z>6N-u7Bv%_;l|6u6BDNiZHh~y>^}}GX5%0w*^h%-ij4FsP=JHd#VnSg-WFBd60b=4d8lwiPGETF$ zp2Qs-*T5r$OmYzEcL+t>cTAU`R>ZC)5P`-zfXi|mMb4HCc<)&GPR}Q8zwsjHQA`e~ zv=c0g4>S0)0ia%tIYGq}KH0CvrgOyXtqDlW5GVk7% zEY7r+#y-}WJ4>q1&C-U^RF-wKF1-F zWuP!p%ror6V@#eSVIai6Lr(RQp3_T)`te&A^HIFhFANW-zu0%623qV)Y?npcJojoa z)kosfNokwh<26I27;Y0sd$wkDNUMU-Kl!|V^h@6X| z-Y+-Q-B(#@bn(t<9df)^&Skyqj)~!0@+D5c<@BB?zqaA+>ExzYW)C?8h`p^0)s5!f z_~YvHV#Rf?xHEBwac^CUy8XcVGU{2TBgy=u9$wrj)tMVQcvZ1t0l`sCI~m%o0hz@v z&!2rO9&YNgQmN(hv!%B=jl+K87p-;0Wi^T2w7Ca0_dh>vhQT<7^LjR46+0xqOlj^8 zu`kHxs#A3rmhO*9cCM59rb^Ra#63ej-!(a6Oi14qo>E`<@idQCa%Q!8F*e+z+O@Sj zOqR^$XaBFZJG?6fHF!-4ILF`bP2wGjqkd|&_{>hVeCphCg&hcF73!{EJ`r#d-n>(Cd;aF8J_aFxu1LCrMqjjqq(cEmt~FI6v9QddS$=u;gHj#@Q+1usVR=> zVB3!N4AtUimqq3hv{U@P&ZpQ25Z+XQ`yXn3IQX?0zPmoFq^cS`$8AzOn;lxw?v~~{ z&9QubvqQyP{vts`@hiBo?AO3jcEXLf$jS=k^K&%#;v4h3TEl6wl^0wLm4!&%Uyq}& zpc;5sqGHoZ?c2}4#`+<09o>aD4d)S&uCLRp*c8fJDM zf9-p60Ed6DxK*gwlD`RBJZ62SajjQdVzq7Gsl0Hio0dDUy!rbq6;9@fvO^=!*#y*U z59#HB?6~tk-lM8G&R@%64bekY^?hjjOcdO{t&Zm817eB;ND z=|-z2c~0t)g-R(Z`VYFv$;o-8;*D-@9lW#~$%-u4Ru4mCGGj=}rxwQuOkTVo3KgT2 ztM@S@-`QQDo%Tm(8<3^C35MMkk4@{Q&Al_@sc`?r*WWT3Y1FQ!fPxGrI z%&QaURlOcbhoc)+aw(N(vOQ>RjC~>fZokDn2VJsd8qvj{5%LCPBGi@tA zkm2LqY#PvM8~^ss6Bz?Vmdo%t%yorFJtL(RRIb_^Sw8Jdh^Oksz-UuPvZ97d=M*g5+7@}+w=@~HDQm=T7G#n5?Bc3m3Z!1wz$ak?~3_F~Mn zl5mvI@zP%Fo{d={oCUnHQLi~N+-7i33Q<&@8Mol_T6PuDBsjo^_*D%gp3+Ax8r_v2 zxAlAPS}nF1-fnIqu1>m&`lZshbV#?m&b+pgBoWo45r(5r(^}_Yd6hr)Il)Wx{1%$$ zs~aAO_kROreD&W=`=InD9?@qFRMweNgU2`ws%3n|6PfSDoHZVwv+DVBTg7PNQC!ND z>M#RMkff}eftdcxfA>iIp4Xulx`_a zSDVhZ6r3tgGn%}=w%DW;!u>MHRws);2yLdXAmgZ@_GGYjY@^PpGDe!rr&nfNwZADL z#n<<%2ECV*8V*ga)R+S}gtwOr;kgL|VCfcI_FCBkI<6>*@M!1ygFI~e6t>C|P3nq= z2^VAZvT6=(6~ac1uitf^Rdf(8k7}dt87f!J&XU6xU0FF-?k!a;TvBrG6wd3wCji;A z0b+lfY}E8TUYUk|^?_39(;s{y8hQ-;_y$)-pAOSM`%W4HI~#;|%u1^0g&r_*=&{Qy z-KwlE)Fg0-SZwQk02>{Yj|=De-Zck(g5tv@(SrS9MXZMgn!IbRt&uKwii{wGV! zXJxGd{^|7LGNl053|m%k{>dY*tD4)!en6;W%;A27RaC!164u8^K{> zl;7%PC{9Zy%M&K0EM1WbGc?tkoI5KkcOmsrk_s1*Ll9=9GdFUSW0XPV=bgythK3>RCna-hGMrUt4x2d%i@vN?2v8vt)8N;h8C%eLqLT zGgsyZ#hIR=whefduvNm;6%Z2D;uuoNxjefZiRD~qp%ikAJb6?i5p#|n$IjHthV$qB zPX8|Wa_Yh(ra61)PiORHcMU?(N=%zKs`7;veHUU(I5MpYQ(4Xp&x5&f~M;lLBMek3HSmvPO7xZU83fP&l^*J*uLk#6HS%y{0I3WX8fuVoWYZWWKAtcmiDQ>> zq^z=hyE>vA zFl~%0u28nIbOpW!%+mPxo}mtVh_X^2g#D9xYQb237yoB2CExd63uU?S&(279k%o); zFj=S`x!x#G?91_7-XIqiCs8GPxt~ z;!VUyiHULVJH?~tg>J9^ire0LygRSt8JT)D9Xa28aL(T(#Eh3SPN|ND^`vy-kO@wbxsU}I$ zd=D}(*-4emiab%eo47g2B_`jXKfuPL)|B9#l5Ug)386c#q7b>ToEL*nDfu~YDtX9u zMBIbAorRuZ_V*l-fSI)f>Bl*1OLX@zOJS9hQvAi|Mw#_{a+HQQ%}YJ54d%{D3)-26 zI?NA~L4=ZI=^?;73_2!@-+P$@UWOqe?hOLLtD_}_Qoke$lu6HCjAT6!Yw5rE{OlR7 zHYvLd;@cA4^5S@^zx}5}QYltw(0x`~$j-Fu#k{0GoOTDIH3__`8}N**6#sh0zSScL zw|sVoZW_GoG6p4|%ZsekN0$8Gyx*Sc5Wu0?DlexHgtz9O>>d!X#0wt;SXG_>mWurIShEcPj_w!S{M0`(w$L ze9olt0a@`+$@PoPBSrFM0-2m@K_%bIeS@N|gELxdQ+_r%J}4Q*>Umhl@4k|*GTo^C zh3H_Jq_np#W-_Xs5Qf)-iZ6q065{a5I3wYN(2!gzIVo`s<0IQ+x^{Z^(UBqb=I3*E zjheH!?4^8}5@8GEVznKsryrKYUg|zzhC_y+=MHD^KxbQbbQm0q3 zHiuuA2c2=JUhjd18O^?@a$T9IJ>8YO%jX0}0+6 zda1B5JPtaQ0C?p4JI*4~a5(U!{hN*?_PnnbPVk#)WPIYF8D{MB$vs`nm#FqeY?3SR6gdMN$UmC%kK z%ehQ0Ma`p{WCS9@d$` zKaQazUx|UZ)G0Ne0}`gx%E3Iy8&A#htDjG?b#+Ex9DT}}T7_XKCB5Jti#C%V(+XA7 zDH#}EOR+?oWE-PRX6sr+>`b%1dGlsKE@66K3Iy@aP$P~2Pt=}X10H>9b>XwQ>p`qw zrK?Kr!_e1z4x9CT$Yr5w~25QCV1MUifs~;+qA@eS`9Vjm_8^p0rDz#efa-X%eAlwj^I}vx7 za11wL_ZTcdP&eKoiNKQ2wRtOm@7HXU1gpeUc4pJwi9T<&#C5iCBA-CWG32=$qzo5^ zlidaudN*jURjR5${uKUWa^L3+uJ|0a^wB(I3mHnG+m~0)A}`JVUqQMk&e;Qq}=-)>3v>EF;_-ulnE7k{`-TftuST%im&|7 zn!qTr?86FjFHh#9UZAP>$VIH_aYuGpj~xSe4VghYYyrpo6;0>^@yfj=U~qXQ>X@m? z-B44jsym{B!Lu0jhPX;4ft~5k#cv*kc_lX+BsQyx-DOVfx(^mbLMrWNDc3R?CZ;LZ z7;qUvlpkKKA^I|eDAlagtq2B2(6Hr|z#T~vKAQL(V*F#`lm>Igy9z<9ImXlMh(QV~ zU?jN6#uAZYzi!+<;Ewrgmnu)E07{#FpG^qr`oV*+0lA5goJ&6ml4lyI{Ji~j(zjqhHD2?F!tjonWT?Q}4{r~+z1veZU~s+KpJ&xxAzohO z38j658xzN_b4Flnb&r^m^nc5!{I%>!4{F!+C` zw>6_UBuns(M{C;eeNkkps!+WJ8GFmtDU+VfrK@7SX!hgH39AX_I$KC+dW;KdMes)X z)yvq!AwY#QlE9xHu}W4yjYBovja*dTt>ql4aO=^xp6b|X_kwWDXE=WUUT7S*tMFb) z>;2~MnAy6{t}C1jC?=x7Mj2)=DYA&q!K?UhI;Bg4Y(V(2Kmg+e-zVZZ0bv=vvo zHI}XHD<}1qMT@h;#4H0oxF6EP-WygrS!IYA6VPh9F6%4vHMmO)&vj+Rk-H45IOsmd z9W;L#N`zA$U2lV=uz`Z~WR<_duK#Ml?|gMRT5vPxSX-V$=ZRAOAEga*(~xmTcfMk# z4?P31C(UNnh6a9hk5^+R5&R8vAX_%U<{gyyNF{>*%zwdRh?cpo*_jG-b0Ik5nH|U} z-at;vv}MkIyi6dt;cckgRg^E7qXrWMcG6N@`7Pg9ur>X`9 zNqzdi$&Gl$j`gsc!Y{;p>ihNGhnrMJ;$8|l*D;2P)t;*PRlO8_8BG0O2043!5miQR zQs{m&IqsrlR>)=e@l+tD91d{QDT_ArjbuOCP!n3G=H#Je*FDek&z2v}_hdPh;NKLW z0h#p`PlI9^D|fr}3v8l4_5bEgIRbVW>|ug~YItR(`L%2RK$-yzwcnB(x~}56?nuX! zIs5FdeGW+jRK*23=?_xvcH~}MXDH>rFjg4l!M4qPe|dz)=D&$8MaLK~^-DB$xYR?r z7%**RQbO2u!%%CQ?4Zqr7`!}U@P_IVE`f$2v&|EmVriDCu?02`Ld`8%lywn6rsb6 zR2p2kdrT5=rJT0~cYylJBIIDnvHhTzi$>-KO(evoC*r*i|JtPnE4vJYn7NBL=bp+W zm(#e|@5?2}QL=MfgOthlvUfp^@@o>}=TE$d2{-1R7ulM6Z@3%B6l?3q_V-_;kuz1U zVT4))C%$?%x&Kp*;(xdRB#GhdaZVRkwqh0xZI)>INgngaxL!rkoM!QBznLs{;h7$p zFIW|i-uxzPr=@OtjU*1W$$DEyLjgoRYPpIIv*5W?SD?LMvPtZxYb zg3XiS_jUm9475i(JP8v+(r`m^9@XUPJ#4w%(ZO~r?9E66#jp(Hjj3?8mi^uJtNi@E zd+Rgpajg-on%~BnsmRIUkVyY4X?L#kT>i>1kJN(sM|pw!_lZl_C3PEXd6Kf|QSZqL zAl%9wZHafgb@21EH34R20yzFW%Hkf`lxi#P(-bjSm|>daem9Ey0hb@yrKr`(#%R{A zOYR%D%?5K4HWr6^zlDx#pdr%NA*}~_gcUNmNQ5gc(S5JnF==D3Ul&s_Eg~bT1Zi?Z zV~GIgWz>5D8*S+nl7u*B1o(?8=%hg_a+%#`u2ki8k3*Z8J>;}&W$~_h+Rr8e>tUvY z#jv5eR;B66-X5@$yID(Hf7;&xx)~6#C}{O_pO-Xz7ngEGCt!b^7*b58MKkNdlZx#c~?U5OQgdLr9wG) zD7@*a=?}-Y&5fn4ssui2YMl#OGOQne0Jofp;WDk>Y>vceJ-gVEGo78)wb1v(gpwY` zCpMu9P`!bU&fJpZ;F0^vR|31`%I%ho`QCJcN>|L9GY#JJE9x2=46?Ga8Xq;%>HSiy z311!RMkge2Qd3iRc}YFQ+Zg4y6dioBN}sHR&P|GB_B}n41!@p&*ml(VA!`c#w9ZbbLKbAe|Xqyo}b4QSnbH|2!My>4MmVd@REv{8S%gV ziUq;_@}pf^7^Ser40Q=!XL0pC9YNCY6A6ugLWl4qi3@ZU(m-RaF}g%@XUt~}gyQgImu~YQx zdoxQiOsGVU#QF2LyKJ;tU9SlQPDnrsviR*LJzYugxfoU&IY2o54@!~c6(#cY?o7;)o7FufW$tt>D zhwr7vrvCq{Z(o09)OETPfdD7R(YzQP~YxB0h6vwB;TOI z!w==9bNBHHmzf!*bikw=sMN66dGD05-B=bH{2%|;P{-fl3l;E%ix!%Y=g#2#e`LQK zJS=-c4crg*6y9@T=pF6YTFfV_W)22l$YJ-jBb?5jX@P!i0eFW{St-7Z3$zmM2k_+?_zk^;@a|Cg=PH{bP}nHj3}D3T+BhT$zs$_@uWym z4!F|ZD11VmOW&XhCi5w%Hk#8PLVBo{Ze-2S8U?TXLK{_Q?hhuTB-hdM^ZLv3gKj;OKlIuYTpeQ#Qr>HSoF8ADtaix>obTt$ zF)aATWtVZ*u;>R7URnQmeJKlJ$$jISUw>@!vhwLA;f(Kuz+y~$^;GowH$MbsuRLhW z4PKbPD0;4O28KFN9~6)Tz$I>5Aw7%4I=!~|hu|wC=d1#Mw3(K0wgbMmm5Gim+bvwK zbJVxjoLnqklSHRpN?az~SkWQi?SV|H6kzBzk3$3SEjib1HMN(OEYY#%rS`o!$N8L9 zbEd%1|Mu+D^;2VQi31|HLdCL4GPP7MBRe`e>bzlsL+--c@~6jTeKW(z2Cea2ODcS* zEKy%6N}sL8y*sMR-WK6IjLUvb#gr|f4;!QE^_DXSYxg@u_~jF+Fj_QyAL7qR8mPuY z6ArTQ1rmm@$}w~Wk)_Ofc}Nd(&tFYX=X0|$ormtV zj>ya{Y+vO}*{t3_wyXY0D{%IUkB$oYrJ&2GUxeW~xR>D&;jt%_Dc3|Y)J{`1)}vkr zmfZYiB}P8CRktnFTHFLJiA}umclqLJiV2_cZ9BHmA2SLiS6W14N~bhKcK>6wjKO=S z9`Un3=LI-`MB5d1{@{*CMs48Xgm^8<;u{8&LH_->8g!D?R&yNe9ntM;4U4u~;DSbq z(Rgw@tmL>hxYxd!xZW0ck}v;(E&%hk93|yX@Jf5@Kg3N#Eu7_Sn2m#H!No^XvmD_M z(DF+$K2wUhuoN=mhn0U%)n?ra^>OZ##_`5tpRb{;Mm=?W+uFl7J%^VQk|picf7cww zt1A^D(5jI5mX;|6>E!XRw=%dW^FG5g$$Q()1O~>Ou>4joyfXdOJJ!$%MK}tpq^xl( zOY6qYAv0lOW=2@OLdPT|n<+neGTnCR6Q8xtd9%C4_ouS-g}}mok-VxtBHY+%BqTn? z2-{T*bqM2mqZw*r)a8G&;EHSPd!MSZsO6#-*weQr+jzdL&!HdNPim2MQ}hcb>ZjdS zceT6P$pEFa+M&Hs-v_aBh8LtEiEVZ1`k7Y3i5259)mJu@;2 zHz9P0d*||wyZ4-R=!1%_u)a^RoM0EMn~W7dTi>Ha4!CKjXLEDTi&J6$0R{MLG5*GH zO{Y|Aac7cC2^|Q0f?L0y&imLz7%8#?o~h9#|)`7jHeKCQ`%aj5}5uK16|nvaUp)a4(P%_N*9Q zaF9RszR5;l<#KtD6dAR1Q|(1z4GwMPdu&Lkpe+-K+NIA5CGPmau*~ z1*Lan0iW@$qhQSCXGJ>zJvMMN={PXp;ED3%B3n@^VdW^n2&nKgFiMp;xW~isJ8aJT zTZGIxJ|xq3^VS=jU+hW{6hT@2aFoLDY>otkAl*v!YK&M>VUhVAeg|KYw^RT@KZAsV~<#YD*pV`9aktqajoiC`q%ld}! z%zuJ5mII2Z@p!;Mvyqa-CTT#g%;d&ONnWgfsXe5a$~q-?gQFsDb>7`H{#8Sqe!o5| zFO*mHH5_8r=aZki;1J8mv`giX^MKIERlzU2ieZMjHz()GaK#gCiN1Y$)1xu}2XJqM zRe&EU&btlfz3f(QNpKb2bBB9or6;*Q@pZJG8DYM3E|X`%aGh#OH7?cM&zjIdY~s~< zUWSJnVHAuOZ{Og8A)iTJz10J!P?3@U*UL(RfV9r3t84X#wRZNMGiyHV9mMsQH0?65 zy+|7TZad!e@tsirgC8wkTtPC1b@Yb-d;O{nGkDGj&L@~tT$xeuKUikxXcu<%)_KVEHXmF^?~x_90jg; z@NJ?_CUFi`vY_7D$-~(-`{@A#&g0bAtza!^e96JQ*4o5R%Xb7ro=0(Ccj*Y#MLEO4 zkemNy$mGQgwZdLh@jP%CUff=NNQ1bfn!+iqN+-*j+|ku4hNGGHTs@U0`lI3jn*TQ< z$MjSiu@Fq}l17rMDMBSy2bCBA@{BLs8z^3Bf{VCLqWT(qnnsDUuq@c&nXmV@Vllho ztJ98{`Dw(Xoif*2?XNAF>QE^sZ5k6PeFLCEU;D=^_I^%LPC-w9{bWy&g-nN<(^HNc zGM&n2a@TRZ(+KO*n-p4}&l0>EM(LG zUe)f9(~N@)dd2hd(NxO2)Sm4ylLBx?dLt<*#T&!9=Nz$mfTL2L%R#!FJ%w80E*4#~ zn6vf*dvJzf@3ke}^gkIG?T%5A)4;3lQWp~^#~qnpNt)V+F~jNCtV+{0 zVUKp_`z@!dxy>eslRwy*Dw=&PcJS;dP)WQb(#`D@GNO$u{uch(gtY!P49U6Gek z#cc7ylmxi9&r;h0SosY(!d%wc@(8N4TX2AQc(ed_CuM$Ta0Q_CIgx^CEOr@(O*~Hz zZ{1s4Rc&tjK#z0>0H)7aBEDD$Zk`{r`c;$yPqgqDIOA9EnpTERl=1(;h4|3QcxB@_ zBu)E@xt<&$`@57M!!>Uk&~9H_uAVQ-v!C5M@G}88eLDQ&3Cvd%KY`;LrTcw~jVCYw zES2_#N{Lu7;f{=tO}g^nedFSLzWUri1v+1bHzL}KDZH&bNPJeLa`k8-l-~Pd7`^=) zZPlK;qx%-fYXj~G;D~er8a`*XR2b@~-5YuOF}B0a7a|DFIUa&`$gQay^hl$m-ooTu zVwc-rRKw}JpHwkpu(WeZM#6SX#Z4p&km0gq+tzdRXsLzmG@ECB<*QY4zpTI7Q)*_3 zu!{P!-Xs)^R6L=BHjxXjefuN4GINT?(Hf!`TE=)-!sB&`aHJOz6=XtKn@shVa-rCh zRa-@uN&dA`h33en!}gu~RHgPmCr&o}1kEkV2brF19&4(9=vl{z zRn-8?Bk=|-?;C)5f-zVU_=JW}#z^>Sy{&X=7Ybqomf(NZqP#zI&7|nA5XWdA%l+*k>l>uM|X$uo8LAR zM!|c&e@>lvL^@fQ>W<#)C@FPWxgrBz*9!=G#LKod^g^nb`@OWYLs8nDoP^ac6-m|F zWyM+SYUsZHz55AIh#7uIYpeLpoMQQ^e+BE?;m#cz$a5bz57UL`e(uk{N>6?hbb&kb z7_0!~oH$1zwuIpFgY*?Y{sHwHfkiS}y^nt3w8ZFV4yPkhzgTDM<_RVZTM)m`| zhncm7)%e|kjAHJ+Jo%oHd<~4pJ9QYUXF-R&4v`f0 zkt!A}@)p^uTjR7FTsMbc&jG>24`8Ox==}Yr1W5DkmX$m=x4xOvVp2=@=U%VBx&QP* zPRjL%&_T~wy06yAtW~C#lgGy4rUj~sB|dUA@$UGdE7`9irJ1L1VrxP zgoEdYn!Pzcr7DhR1$~%ZV|j0s>wcSb!ql5{ zjwJ71el$Ey53;s#`5I7#sJ*0FmKqbl>tW?PM(k}2ui}bKfT`wR62V6sgxP{p9}cN< zPkfduzs{GE7Av;-OQ2FtC0Em2ul!RR?QhO0{xiY|B&1CJE2JoVZsO^|Tha`UyoKFINEDC1?rAs_-4qqd<}AcVy@}N- zIKKWecnNSE7?Tln1J;>H+0Hp4?>nyp6-Z3fVN<6u)ukJZ7o?JDDc#XQU$so->%vvB|v~9muOpR2T`F}ZCAJqLay-!62AdAig0@f z;Nt;1_&Dy79Q_c(ac6RcNOJm=*oTL?@Gry|3#jG!o9j;P;(&n zPaj||A?L6L^&_Fnk)c#`J0`OWC@BBQzi}J{2(JK*>VMf`-Zz0BhBK!31T61{%+iJw zp+iRPa^^ZM>RgkS=IH6O3;)T$Cl8{d#WsKQ!pIUc<1`g#NS8PO_}}Q45QWjf(%vB9 zxW%iuBU5vRZX84r+QxM~PXhV=Cu9eF{#w?iU;TW+!&d)ijuPf`0vGD%Z~n>2y?+cj z<9j2Wc_S~EAlO?z(FxxOn16T0MuI)bF`3`7|K#B+xewSmS;LMKkSYYxT&uXe8Ix48qa6eM zr{yEEhk6&xSD<*OA+MWM9COOYD-zcooO~=2waB)4>wi!Nd-KNo8)2Ws+?+TPCO#dPWITTM`O4~+w^UKPfy1{3n zn{ut@SVrPz6r>fuppdS(cBNfZ+l9X0K)(Y2+%UrHZ^X4qE(Z#+k?mVCR8C*kJxXt@ zu{wbvW4yBFZvIxM*T@|6r_Y2AnvABtBb`;-rTd-yndwjKl}p#-+D+CTe0gP%;pBvr z+)vJ%8RW)N2R}^bg>T&OqUD}U0_7Zl=N5{#djs^6~g_Bh%D_39T>J%S{=}TA0;z^^x zGnGNYSe!yHPM^MfdLA^A47oC1>H{ifU_9{#f%-QQ7wx z(OgLIkDbdbQcVt=2eVlbpNFd=GKYmi_j0bEXCNmGgsbutIqaXs6%i3(<+W8!&ba9h z=sO-xR0%UqfP61Q4PRx^%BtOSJe`R|dKNmRfSQ5oOQExCUz#kVixo338Td-Mz)zp1 znCMJ}c5H|!ZlLu=a37ABgR*7LQ0Jct((*+RDN~Dt%curHfdOjZ&2ps;h(OfkN)tW< zq|U$(jAI=;XQ;7tqPNs2=6++Vb{S&%!9O(ZO#3Jv?ynK*aCWuYCrbKBk%MtRPrj9u zfsi{Yev>;$S^}l9#-uM~A=^G@)}R;(a4qns3B36be%`hJaWO}E70kc6VND5b-X+j| zZWO=q-Sh$=kdrqaXMKepnr{b7EydjL<+sfV@PER!@Sm4$B0dyz9WO8V`5^5d0mEOC ze+YU&*l?wap!PvGUmy&CcgfKc7|sTN2Ck9}_y1|{I-{D(wlKs<5d;(v5v1tD%+QA- zC5D6%L5hSC9xzG~5m6E828Nl0GCt-hRZ65snj+G41gQaW00||4iX&C&27^E#KqQ$R z=ZCI0YrVDJTJPuNS8~t2cip?s$=T)m_TE0=^qsi`&voFS=D?MtSR4V(^@_klM`{Bw z?K8Li7w|4&2f4caCOTnfZqUC{(FtOiAwmb~xnd>~!YANv7oM<4@xYe|Q3bvPM2z)? z>QYUBEEw$TS|pG9CmeHnwxopY0vomUIXu@fOV^@NC1HNA+)Q@o?`SBr^oSz86y|rmwwL3MYqlz{k_plx6UBr3;fW!bP3NJ zWOhr8Pg#mH&-{kJoT|WYYCF(lT*_xm*(9=69E3ndC6=FIQT}$70aQqkk_3OoK8K~i zgmLSPH@tPA?G;_##~3ksH&EVBvu+T6`5M;^K2A3A)kTcfB~R)iRRjb@Z~_RaD1lF3 zpQeBi6TfRc^yNYRcwi!UfB)kZQThmX$-0f-`-q2NQ&~>U|M;{HH(A9)hH7uE)l$=E z^CIoJAL6iSCN293BdW^8_1jK&9a};eWPgzn z6|K*myvswHZA?jTtX7h=vJd;;>`K?5f!ad3xQD&4-ZoG58Rv1?YG^cPJs-3B-0@`j zDMMaDffY(bMn)#Qj-^A|xG@_5sV-A%!vSorZ7fb5X=7tERZR9+zVt9wSkeZx*i_^= zCogn@Qdg|%xH(~w88td#b_0-b6B7`9#aZBGfQS)?-9gF(R;A^c*Ndf{Q zj@B0DPAKGNZ!UV8*|3;#*#C8Bg**5i&$^}ZFlv0fv5v>(6x-*TJ_uhri!UO-u#DfU zDv4nw^L0p;)Q4+Pdt{oR2H@r@gC?x}qlz@jK5cx9N$4OUmwlv6gRZyuRW{9t7OeDP zJ=Yd~pWK>T;iv8lmYl#(P_DIe7O6Vk?eRg^C3}UeaI?e9)3oUaH0@NIboGb=bt9vp zY!WEqZ*f?PrrTqO=B0#yaO_!zWHOIU;-UJEti+%5@yVr67bcmhL*J&V-~;9BGmSng8NG<0So14^As&nKq8ZXi^OD;m?u zL32oir&?9S3Q(x=q^wYLF>8^W#Fj@x9*pwcrjzmd_TdZ79OjC%Sn2UQ<}EsidnO$T z3MeT3m<}@2ohS9>tj7?=*I;Q(Lk&$U3dfK$XT=(O$=j^tnU>>RmYga*F#Y~}pmt>% zbQ`mY71~J=7W5REnw_P&6Go@EY;0qpR9xsada~-#a|1=z!BE;Vk6uiS9*{jMtKrPb zcmfT#*lD(JwyI*yMh;d5jGJWw7+c%zN*XCKS8+#lnDsWX$0Em^hbn7Cr4Mxi6Jh2> zNEqYgD)&7D;Q0Es<>pD``JSxl7hF%?=1`LsS~CdS^D~Zu=GLkSu%&m+)yEXVw2fi8 zo5fqJL!RUgrASQyzqtWJgy|h-hT_HH`nYQ2>sduJK0z`R8gQU9|$JCji- zFQ)h65Bg`GcYHLyIu%%S`&qbzI|rIK=Pz(Aa*BWv+!+w7{h}6 zfcJ40OXjU7@r?ZgerR?Ws&H=#@wfo_rcqplk_`u!!|zPYHwzCU_DAO}9C^E8AX;>Q z9;Tc|ynU7$nDt>l(fzj#D2cgH-c8p*8i=f$<6PK{%Uv2Cs%0S>DQi!}bUJ7ANyM(o z_y2C})0Z-qjplA~XkehOt7gx?Q4riRKaCI4!G|;CSU`5DR_`%dz7qE9`JR0nt&+sR zkHS~VheB`ofo~p!V#>cGKVW#Qj5ZJ=d2m`f;kSI| z`17`DmJ?wg@}wF?LzhKwg$e@pkMLt5*)7=t&GWha!RkR3s7s5ls@sMGDo~H}0dM!H zzD>LNNUA?J@bOIF`;F8@c0JE!Hg)WJf&ctKv7UFk_~L}Egv*Jz`wfflTx`pmSeo1X zPuE;ts)?OfVm<6L8%EEbp;OGqqJtJ2R}yQ>-@e*SaL>3uELG-G$<)RjVJ8T9(xq|F zcC(QxOUF+l?bYaEl7p~$+AeC;?Rix10Xh`*1TNb>qmYlLkY>F6MF@>PML(x zIe=+uEZ9}$)n-wPr>i9I5X?oBc${&(l*JFW*LJLJ7u)lTlI2}a%xdq7cdhdU!Lr5q zRae-TY;Yu2KZbg$^Igq#s6lzd1ONK|_Ya*KrZ63%bLm}xF0K^!evRpyXjceeHD6~8 z+4Yb+DpDFjr%b`DrY$U74zOPCF&ft_KV5q@M}^5bCcy7Xuo?ZQqWePUS>Req)tI|J z_#FRFr56Q3P@uJYy;c3|NEM8 Date: Wed, 29 Jan 2020 15:22:00 -0500 Subject: [PATCH 24/30] update hide/show modebar doc --- .../config-options/2015-09-24-config-opt-hide-modebar.html | 6 +++++- .../config-options/2020-01-24-display-modebar.html | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html index 7a07028e7f3e..45d50391960e 100644 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config-opt-hide-modebar.html @@ -1,10 +1,14 @@ --- -name: Hide the Modebar +name: Never Display The Modebar language: plotly_js suite: configuration order: 5 sitemap: false arrangement: horizontal +markdown_content: | + When users hover over a figure generated with `plotly.js`, a `modebar` appears in the top-right of the figure. This presents users with several options for interacting with the figure. + + By default, the `modebar` is only visible while the user is hovering over the chart. If you would like the `modebar` to never be visible, then set the `displayModeBar` attribute in the `config` of your figure to `false`. --- var trace1 = { x:['Zebras', 'Lions', 'Pelicans'], diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html index 7ba50c3d05b5..62d84e2c47c9 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html @@ -1,12 +1,14 @@ --- -name: Always Display the Modebar +name: Prevent The Modebar From Disappearing language: plotly_js suite: configuration order: 4 sitemap: false arrangement: horizontal markdown_content: | - When you hover over the top right of a figure generated with `plotly.js`, a bar appears which we call a `modeBar`. To display or hide this modebar set the `displayModeBar` attribute in the `config` of your figure to `true` or `false`, respectively. + When users hover over a figure generated with `plotly.js`, a `modebar` appears in the top-right of the figure. This presents users with several options for interacting with the figure. + + By default, the `modebar` is only visible while the user is hovering over the chart. If you would like the `modebar` to always be visible regardless of whether or not the user is currently hovering over the figure, set the `displayModeBar` attribute in the `config` of your figure to `true`. --- var trace1 = { y:['Marc', 'Henrietta', 'Jean', 'Claude', 'Jeffrey', 'Jonathan', 'Jennifer', 'Zacharias'], From 3b876d71449393626e34d3f61a6902296011fdaf Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 15:25:44 -0500 Subject: [PATCH 25/30] change title of modebar doc --- .../fundamentals/config-options/2020-01-24-display-modebar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html index b4316ed11152..3558dda7816d 100644 --- a/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html +++ b/_posts/plotly_js/fundamentals/config-options/2020-01-24-display-modebar.html @@ -1,5 +1,5 @@ --- -name: Prevent The Modebar From Disappearing +name: Force The Modebar to Always Be Visible language: plotly_js suite: configuration order: 4 From fbb21b60fa5f6e2683f7a3ab040c507d8c79ec19 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 16:05:34 -0500 Subject: [PATCH 26/30] add configuration options to plotly fundamentals section --- .../2015-09-24-config_options_index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html index 07c8ab89a4ad..a62a5b0beb06 100755 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html @@ -1,17 +1,18 @@ --- name: Configuration Options permalink: javascript/configuration-options/ -description: How to configure your Plotly graph in javascript. +description: How to set the configuration options for figures in JavaScript. layout: base language: plotly_js page_type: example_index thumbnail: thumbnail/modebar-icons.png -display_as: reference +display_as: file_settings +order: 26 --- The plotly.js config argument sets properties like the mode bar buttons and the interactivity in the chart. -It's the last argument in Plotly.newPlot and Plotly.newPlot calls. +It's the last argument in Plotly.newPlot calls.
    View the full list of configuration options in the @@ -20,9 +21,8 @@ .

    -For Enterprise Users: For Configuring the On-Premise Version, The custom domain should be set by adding the following line in the javascript code: +For Chart Studio Enterprise Users: Store the custom domain of your Chart Studio Enterprise server by adding the following line to your JavaScript code:
    PLOTLYENV = 'https://<domain>.plot.ly';
    - {% assign examples = site.posts | where:"language","plotly_js" | where:"suite","configuration" | sort: "order" %} {% include posts/auto_examples.html examples=examples %} \ No newline at end of file From 038188b3b63c26ea2bb72ed7fb99cf4c01080fbe Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Wed, 29 Jan 2020 16:12:33 -0500 Subject: [PATCH 27/30] fixup order of fundamentals --- .../config-options/2015-09-24-config_options_index.html | 2 +- .../static-image-export/2016-05-20-static-image.md | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html index a62a5b0beb06..73958ca0e9f2 100755 --- a/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html +++ b/_posts/plotly_js/fundamentals/config-options/2015-09-24-config_options_index.html @@ -7,7 +7,7 @@ page_type: example_index thumbnail: thumbnail/modebar-icons.png display_as: file_settings -order: 26 +order: 1 --- diff --git a/_posts/plotly_js/fundamentals/static-image-export/2016-05-20-static-image.md b/_posts/plotly_js/fundamentals/static-image-export/2016-05-20-static-image.md index 8478f1e563e4..76238b2d2406 100644 --- a/_posts/plotly_js/fundamentals/static-image-export/2016-05-20-static-image.md +++ b/_posts/plotly_js/fundamentals/static-image-export/2016-05-20-static-image.md @@ -1,19 +1,18 @@ --- -name: Export JavaScript plots as JPG, PNG ,SVG permalink: javascript/static-image-export/ -description: How to export plotly graphs as static images in JavaScript. Plotly supports jpg, png and svg image export. +description: How to export graphs as static images in JavaScript. The Plotly JavaScript graphing library supports `.jpg`, `.png`, and `.svg` as formats for static image export. layout: base name: Static Image Export thumbnail: thumbnail/png-export.png language: plotly_js display_as: chart_type -page_type: example_index +page_type: u-guide display_as: file_settings -order: 1 +order: 26 sitemap: false --- -You can save plotly graphs to static images and view them in your browser. Consider the following example: +You can save graphs created with `plotly.js` to static images and view them in your browser. Consider the following example: var d3 = Plotly.d3; var img_jpg= d3.select('#jpg-export'); From d3f24ef2c82314f20acaf1aa66c23447a037ffff Mon Sep 17 00:00:00 2001 From: plotlydocbot Date: Wed, 29 Jan 2020 21:58:30 +0000 Subject: [PATCH 28/30] deploying https://github.com/plotly/plotly.r-docs/commit/caf69a97104efc8e93b451a55b9b32dc51935f75 From 3b153c736029b49f481eb5626c81088509dd6293 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Thu, 30 Jan 2020 12:33:27 -0500 Subject: [PATCH 29/30] adding new to plotly section for python, r, and js (#1656) * adding new to plotly section for python, r, and js * update copy in new to plotly section * formatting tweaks * formatting tweaks * formatting tweaks Co-authored-by: Nicolas Kruchten --- Rakefile | 1 + _includes/layouts/new-to-plotly.html | 13 +++++++++++++ _layouts/base.html | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 _includes/layouts/new-to-plotly.html diff --git a/Rakefile b/Rakefile index 3ad04be7df8b..a1c0fc076005 100755 --- a/Rakefile +++ b/Rakefile @@ -31,6 +31,7 @@ task :serve => [] do puts "...getting latest python docs" system "rm -rf _posts/python/html" or exit!(1) system "rm -rf _posts/r/md" or exit!(1) + system "rm -rf _posts/ggplot2/md/ggplot2" or exit!(1) system "git clone -b built git@github.com:plotly/plotly.py-docs _posts/python/html" or exit!(1) system "git clone -b built git@github.com:plotly/plotly.r-docs _posts/r/md" or exit!(1) system "mv _posts/r/md/ggplot2 _posts/ggplot2/md" or exit!(1) diff --git a/_includes/layouts/new-to-plotly.html b/_includes/layouts/new-to-plotly.html new file mode 100644 index 000000000000..cddac95fe624 --- /dev/null +++ b/_includes/layouts/new-to-plotly.html @@ -0,0 +1,13 @@ + +{% if page.language == "python" or page.language == "plotly_js" or page.language == "r" or page.language == "ggplot2" %} +
    + New to Plotly? + {% if page.language == "python" %} +

    Plotly is a free and open-source graphing library for Python. We recommend you read our Getting Started guide for the latest installation or upgrade instructions, then move on to our Plotly Fundamentals tutorials or dive straight in to some Basic Charts tutorials.

    + {% elsif page.language == "plotly_js" %} +

    Plotly is a free and open-source graphing library for JavaScript. We recommend you read our Getting Started guide for the latest installation or upgrade instructions, then move on to our Plotly Fundamentals tutorials or dive straight in to some Basic Charts tutorials.

    + {% elsif page.language == "r" or page.language == "ggplot2" %} +

    Plotly is a free and open-source graphing library for R. We recommend you read our Getting Started guide for the latest installation or upgrade instructions, then move on to our Plotly Fundamentals tutorials or dive straight in to some Basic Charts tutorials.

    + {% endif %} +
    +{% endif %} diff --git a/_layouts/base.html b/_layouts/base.html index f055ed529035..253d3a563c67 100644 --- a/_layouts/base.html +++ b/_layouts/base.html @@ -61,7 +61,7 @@
    -
    +
    @@ -114,6 +114,7 @@

    {% endunless %} {% include layouts/lang-navigation.html %} + {% include layouts/new-to-plotly.html %}

    From 0f1afcbcaae9ade950fa5f8396ba56fd081f0664 Mon Sep 17 00:00:00 2001 From: Joseph Damiba Date: Thu, 30 Jan 2020 15:10:36 -0500 Subject: [PATCH 30/30] delete config.yml --- .circleci/config.yml | 118 ------------------------------------------- 1 file changed, 118 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index ccda1daf7cfd..000000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,118 +0,0 @@ -version: 2 -jobs: - build: - branches: - ignore: - - gh-pages - - docker: - # a packaged system that has the instructions for creating a running container. - - image: circleci/ruby:2.3.3 - - # actions that need to be taken to perform your job - steps: - - add_ssh_keys: - fingerprints: - - "dc:5f:39:48:00:b4:72:34:e1:d2:c4:e1:1f:d1:e2:ce" #plotlydocbot - - - restore_cache: - keys: - - source-v1- #one time, not every time! - - # checks out the source code for a job over SSH - - checkout - - - save_cache: - key: source-v1-1 # Sept 7, 2019 - paths: - - ".git" - - - restore_cache: - keys: - - gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }} - - gem-cache-v1-{{ arch }}-{{ .Branch }} - - gem-cache-v1 - - - run: - name: install dependencies - command: | - bundle install --path vendor/bundle - sudo apt-get update - sudo apt install python-pip - sudo pip install python-frontmatter - sudo pip install pathlib - - - save_cache: - key: gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }} - paths: - - vendor/bundle - - - run: - name: deployment - command: | - git config --global user.email "accounts@plot.ly" - git config --global user.name "plotlydocbot" - echo - echo "token: ${mapbox_token}" > _data/mapbox_token.yml - rm -rf _posts/python/html - rm -rf _posts/r/md - git clone -b built git@github.com:plotly/plotly.py-docs _posts/python/html - git clone -b built git@github.com:plotly/plotly.r-docs _posts/r/md - mv _posts/r/md/ggplot2 _posts/ggplot2/md - python front-matter-ci.py _posts - python check-or-enforce-order.py _posts/python - python check-or-enforce-order.py _posts/python-v3 - python check-or-enforce-order.py _posts/r/ - python check-or-enforce-order.py _posts/plotly_js - bundle exec jekyll build - rm _data/mapbox_token.yml - mkdir snapshots - cd _site - cp -r 'all_static' '../snapshots' - cp 'api/index.html' '../snapshots' - cp --parents 'python/index.html' '../snapshots' - cp --parents 'python/getting-started/index.html' '../snapshots' - cp --parents 'python/plotly-fundamentals/index.html' '../snapshots' - cp --parents 'python/line-and-scatter/index.html' '../snapshots' - cp --parents 'r/index.html' '../snapshots' - cp --parents 'r/getting-started/index.html' '../snapshots' - cp --parents 'r/plotly-fundamentals/index.html' '../snapshots' - cp --parents 'r/line-and-scatter/index.html' '../snapshots' - cp --parents 'javascript/index.html' '../snapshots' - cp --parents 'javascript/plotly-fundamentals/index.html' '../snapshots' - cp --parents 'javascript/getting-started/index.html' '../snapshots' - cp --parents 'javascript/line-and-scatter/index.html' '../snapshots' - cp --parents 'ggplot2/index.html' '../snapshots' - cp --parents 'ggplot2/getting-started/index.html' '../snapshots' - cp --parents 'ggplot2/geom_abline/index.html' '../snapshots' - cp --parents 'python/v3/index.html' '../snapshots' - cp --parents 'python/v3/plotly-fundamentals/index.html' '../snapshots' - cp --parents 'python/v3/getting-started/index.html' '../snapshots' - cp --parents 'python/v3/line-and-scatter/index.html' '../snapshots' - cp --parents 'matlab/index.html' '../snapshots' - cp --parents 'matlab/getting-started/index.html' '../snapshots' - cp --parents 'matlab/graphing-multiple-chart-types/index.html' '../snapshots' - cp --parents 'matlab/scatter/index.html' '../snapshots' - cd .. - rm -f 'snapshots/all_static/javascripts/jquery-knob/index.html' - rm -f 'snapshots/all_static/images/Plotly-feed2.html' - rm -f 'snapshots/all_static/images/Plotly.html' - rm -f 'snapshots/all_static/images/Plotly-Feed.html' - sed -i.bkp 's/drift\.load/console\.log/g' snapshots/*.html - sed -i.bkp 's/drift\.load/console\.log/g' snapshots/*/*.html - sed -i.bkp 's/drift\.load/console\.log/g' snapshots/*/*/*.html - rm -f snapshots/*.bkp - rm -f snapshots/*/*.bkp - rm -f snapshots/*/*/*.bkp - percy snapshot snapshots --enable_javascript - rm -rf 'snapshots/' - if [ "${CIRCLE_BRANCH}" == "source-design-merge" ]; then - git checkout gh-pages - git pull origin gh-pages - cp -r _site/* . - rm -rf _site/ - touch .nojekyll - git add . - git commit -m "deploying https://github.com/plotly/documentation/commit/${CIRCLE_SHA1}" - git push origin gh-pages - fi