From dee519d60ded4709dc7d15da6e81da9b77cbadff Mon Sep 17 00:00:00 2001 From: Wenjie SUN Date: Fri, 9 Aug 2024 16:36:55 +0200 Subject: [PATCH] Built site for ggfigdone@0.1.0: --- .nojekyll | 1 + 404.html | 100 +++++++++ LICENSE-text.html | 95 +++++++++ authors.html | 94 +++++++++ bootstrap-toc.css | 60 ++++++ bootstrap-toc.js | 159 +++++++++++++++ docsearch.css | 148 ++++++++++++++ docsearch.js | 85 ++++++++ index.html | 211 +++++++++++++++++++ link.svg | 12 ++ pkgdown.css | 384 +++++++++++++++++++++++++++++++++++ pkgdown.js | 108 ++++++++++ pkgdown.yml | 5 + reference/Rplot001.png | Bin 0 -> 1011 bytes reference/fd_add.html | 165 +++++++++++++++ reference/fd_canvas.html | 115 +++++++++++ reference/fd_init.html | 120 +++++++++++ reference/fd_load.html | 119 +++++++++++ reference/fd_ls.html | 107 ++++++++++ reference/fd_merge.html | 139 +++++++++++++ reference/fd_rm.html | 92 +++++++++ reference/fd_save.html | 96 +++++++++ reference/fd_server.html | 119 +++++++++++ reference/fd_unique.html | 139 +++++++++++++ reference/fd_update_fig.html | 100 +++++++++ reference/ggfigdone.html | 94 +++++++++ reference/index.html | 122 +++++++++++ sitemap.xml | 20 ++ 28 files changed, 3009 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 LICENSE-text.html create mode 100644 authors.html create mode 100644 bootstrap-toc.css create mode 100644 bootstrap-toc.js create mode 100644 docsearch.css create mode 100644 docsearch.js create mode 100644 index.html create mode 100644 link.svg create mode 100644 pkgdown.css create mode 100644 pkgdown.js create mode 100644 pkgdown.yml create mode 100644 reference/Rplot001.png create mode 100644 reference/fd_add.html create mode 100644 reference/fd_canvas.html create mode 100644 reference/fd_init.html create mode 100644 reference/fd_load.html create mode 100644 reference/fd_ls.html create mode 100644 reference/fd_merge.html create mode 100644 reference/fd_rm.html create mode 100644 reference/fd_save.html create mode 100644 reference/fd_server.html create mode 100644 reference/fd_unique.html create mode 100644 reference/fd_update_fig.html create mode 100644 reference/ggfigdone.html create mode 100644 reference/index.html create mode 100644 sitemap.xml diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..e06eb9c --- /dev/null +++ b/404.html @@ -0,0 +1,100 @@ + + + + + + + +Page not found (404) • ggfigdone + + + + + + + + + + + +
+
+ + + + +
+
+ + +Content not found. Please use links in the navbar. + +
+ + + +
+ + + +
+ +
+

+

Site built with pkgdown 2.1.0.9000.

+
+ +
+
+ + + + + + + + diff --git a/LICENSE-text.html b/LICENSE-text.html new file mode 100644 index 0000000..c25c229 --- /dev/null +++ b/LICENSE-text.html @@ -0,0 +1,95 @@ + +License • ggfigdone + + +
+
+ + + +
+
+ + +
MIT License
+
+Copyright (c) 2024 Wenjie SUN
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+ +
+ + + +
+ + + +
+ +
+

Site built with pkgdown 2.1.0.9000.

+
+ +
+ + + + + + + + diff --git a/authors.html b/authors.html new file mode 100644 index 0000000..e7040bb --- /dev/null +++ b/authors.html @@ -0,0 +1,94 @@ + +Authors and Citation • ggfigdone + + +
+
+ + + +
+
+
+ + + +
  • +

    Wenjie SUN. Author, maintainer. +

    +
  • +
+
+
+

Citation

+ Source: DESCRIPTION +
+
+ + +

SUN W (2024). +ggfigdone: Manage & Modify ggplot figures using ggfigdone. +R package version 0.1.0. +

+
@Manual{,
+  title = {ggfigdone: Manage & Modify ggplot figures using ggfigdone},
+  author = {Wenjie SUN},
+  year = {2024},
+  note = {R package version 0.1.0},
+}
+ +
+ +
+ + + +
+ +
+

Site built with pkgdown 2.1.0.9000.

+
+ +
+ + + + + + + + diff --git a/bootstrap-toc.css b/bootstrap-toc.css new file mode 100644 index 0000000..5a85941 --- /dev/null +++ b/bootstrap-toc.css @@ -0,0 +1,60 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ + +/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ + +/* All levels of nav */ +nav[data-toggle='toc'] .nav > li > a { + display: block; + padding: 4px 20px; + font-size: 13px; + font-weight: 500; + color: #767676; +} +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 19px; + color: #563d7c; + text-decoration: none; + background-color: transparent; + border-left: 1px solid #563d7c; +} +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 18px; + font-weight: bold; + color: #563d7c; + background-color: transparent; + border-left: 2px solid #563d7c; +} + +/* Nav: second level (shown on .active) */ +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} +nav[data-toggle='toc'] .nav .nav > li > a { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 30px; + font-size: 12px; + font-weight: normal; +} +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 29px; +} +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 28px; + font-weight: 500; +} + +/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ +nav[data-toggle='toc'] .nav > .active > ul { + display: block; +} diff --git a/bootstrap-toc.js b/bootstrap-toc.js new file mode 100644 index 0000000..1cdd573 --- /dev/null +++ b/bootstrap-toc.js @@ -0,0 +1,159 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ +(function() { + 'use strict'; + + window.Toc = { + helpers: { + // return all matching elements in the set, or their descendants + findOrFilter: function($el, selector) { + // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ + // http://stackoverflow.com/a/12731439/358804 + var $descendants = $el.find(selector); + return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); + }, + + generateUniqueIdBase: function(el) { + var text = $(el).text(); + var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); + return anchor || el.tagName.toLowerCase(); + }, + + generateUniqueId: function(el) { + var anchorBase = this.generateUniqueIdBase(el); + for (var i = 0; ; i++) { + var anchor = anchorBase; + if (i > 0) { + // add suffix + anchor += '-' + i; + } + // check if ID already exists + if (!document.getElementById(anchor)) { + return anchor; + } + } + }, + + generateAnchor: function(el) { + if (el.id) { + return el.id; + } else { + var anchor = this.generateUniqueId(el); + el.id = anchor; + return anchor; + } + }, + + createNavList: function() { + return $(''); + }, + + createChildNavList: function($parent) { + var $childList = this.createNavList(); + $parent.append($childList); + return $childList; + }, + + generateNavEl: function(anchor, text) { + var $a = $(''); + $a.attr('href', '#' + anchor); + $a.text(text); + var $li = $('
  • '); + $li.append($a); + return $li; + }, + + generateNavItem: function(headingEl) { + var anchor = this.generateAnchor(headingEl); + var $heading = $(headingEl); + var text = $heading.data('toc-text') || $heading.text(); + return this.generateNavEl(anchor, text); + }, + + // Find the first heading level (`

    `, then `

    `, etc.) that has more than one element. Defaults to 1 (for `

    `). + getTopLevel: function($scope) { + for (var i = 1; i <= 6; i++) { + var $headings = this.findOrFilter($scope, 'h' + i); + if ($headings.length > 1) { + return i; + } + } + + return 1; + }, + + // returns the elements for the top level, and the next below it + getHeadings: function($scope, topLevel) { + var topSelector = 'h' + topLevel; + + var secondaryLevel = topLevel + 1; + var secondarySelector = 'h' + secondaryLevel; + + return this.findOrFilter($scope, topSelector + ',' + secondarySelector); + }, + + getNavLevel: function(el) { + return parseInt(el.tagName.charAt(1), 10); + }, + + populateNav: function($topContext, topLevel, $headings) { + var $context = $topContext; + var $prevNav; + + var helpers = this; + $headings.each(function(i, el) { + var $newNav = helpers.generateNavItem(el); + var navLevel = helpers.getNavLevel(el); + + // determine the proper $context + if (navLevel === topLevel) { + // use top level + $context = $topContext; + } else if ($prevNav && $context === $topContext) { + // create a new level of the tree and switch to it + $context = helpers.createChildNavList($prevNav); + } // else use the current $context + + $context.append($newNav); + + $prevNav = $newNav; + }); + }, + + parseOps: function(arg) { + var opts; + if (arg.jquery) { + opts = { + $nav: arg + }; + } else { + opts = arg; + } + opts.$scope = opts.$scope || $(document.body); + return opts; + } + }, + + // accepts a jQuery object, or an options object + init: function(opts) { + opts = this.helpers.parseOps(opts); + + // ensure that the data attribute is in place for styling + opts.$nav.attr('data-toggle', 'toc'); + + var $topContext = this.helpers.createChildNavList(opts.$nav); + var topLevel = this.helpers.getTopLevel(opts.$scope); + var $headings = this.helpers.getHeadings(opts.$scope, topLevel); + this.helpers.populateNav($topContext, topLevel, $headings); + } + }; + + $(function() { + $('nav[data-toggle="toc"]').each(function(i, el) { + var $nav = $(el); + Toc.init($nav); + }); + }); +})(); diff --git a/docsearch.css b/docsearch.css new file mode 100644 index 0000000..e5f1fe1 --- /dev/null +++ b/docsearch.css @@ -0,0 +1,148 @@ +/* Docsearch -------------------------------------------------------------- */ +/* + Source: https://github.com/algolia/docsearch/ + License: MIT +*/ + +.algolia-autocomplete { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.algolia-autocomplete .ds-dropdown-menu { + width: 100%; + min-width: none; + max-width: none; + padding: .75rem 0; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); +} + +@media (min-width:768px) { + .algolia-autocomplete .ds-dropdown-menu { + width: 175% + } +} + +.algolia-autocomplete .ds-dropdown-menu::before { + display: none +} + +.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { + padding: 0; + background-color: rgb(255,255,255); + border: 0; + max-height: 80vh; +} + +.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { + margin-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion { + padding: 0; + overflow: visible +} + +.algolia-autocomplete .algolia-docsearch-suggestion--category-header { + padding: .125rem 1rem; + margin-top: 0; + font-size: 1.3em; + font-weight: 500; + color: #00008B; + border-bottom: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { + float: none; + padding-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { + float: none; + width: auto; + padding: 0; + text-align: left +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content { + float: none; + width: auto; + padding: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content::before { + display: none +} + +.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { + padding-top: .75rem; + margin-top: .75rem; + border-top: 1px solid rgba(0, 0, 0, .1) +} + +.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { + display: block; + padding: .1rem 1rem; + margin-bottom: 0.1; + font-size: 1.0em; + font-weight: 400 + /* display: none */ +} + +.algolia-autocomplete .algolia-docsearch-suggestion--title { + display: block; + padding: .25rem 1rem; + margin-bottom: 0; + font-size: 0.9em; + font-weight: 400 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--text { + padding: 0 1rem .5rem; + margin-top: -.25rem; + font-size: 0.8em; + font-weight: 400; + line-height: 1.25 +} + +.algolia-autocomplete .algolia-docsearch-footer { + width: 110px; + height: 20px; + z-index: 3; + margin-top: 10.66667px; + float: right; + font-size: 0; + line-height: 0; +} + +.algolia-autocomplete .algolia-docsearch-footer--logo { + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position: 50%; + background-size: 100%; + overflow: hidden; + text-indent: -9000px; + width: 100%; + height: 100%; + display: block; + transform: translate(-8px); +} + +.algolia-autocomplete .algolia-docsearch-suggestion--highlight { + color: #FF8C00; + background: rgba(232, 189, 54, 0.1) +} + + +.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { + box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) +} + +.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: rgba(192, 192, 192, .15) +} diff --git a/docsearch.js b/docsearch.js new file mode 100644 index 0000000..b35504c --- /dev/null +++ b/docsearch.js @@ -0,0 +1,85 @@ +$(function() { + + // register a handler to move the focus to the search bar + // upon pressing shift + "/" (i.e. "?") + $(document).on('keydown', function(e) { + if (e.shiftKey && e.keyCode == 191) { + e.preventDefault(); + $("#search-input").focus(); + } + }); + + $(document).ready(function() { + // do keyword highlighting + /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ + var mark = function() { + + var referrer = document.URL ; + var paramKey = "q" ; + + if (referrer.indexOf("?") !== -1) { + var qs = referrer.substr(referrer.indexOf('?') + 1); + var qs_noanchor = qs.split('#')[0]; + var qsa = qs_noanchor.split('&'); + var keyword = ""; + + for (var i = 0; i < qsa.length; i++) { + var currentParam = qsa[i].split('='); + + if (currentParam.length !== 2) { + continue; + } + + if (currentParam[0] == paramKey) { + keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); + } + } + + if (keyword !== "") { + $(".contents").unmark({ + done: function() { + $(".contents").mark(keyword); + } + }); + } + } + }; + + mark(); + }); +}); + +/* Search term highlighting ------------------------------*/ + +function matchedWords(hit) { + var words = []; + + var hierarchy = hit._highlightResult.hierarchy; + // loop to fetch from lvl0, lvl1, etc. + for (var idx in hierarchy) { + words = words.concat(hierarchy[idx].matchedWords); + } + + var content = hit._highlightResult.content; + if (content) { + words = words.concat(content.matchedWords); + } + + // return unique words + var words_uniq = [...new Set(words)]; + return words_uniq; +} + +function updateHitURL(hit) { + + var words = matchedWords(hit); + var url = ""; + + if (hit.anchor) { + url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; + } else { + url = hit.url + '?q=' + escape(words.join(" ")); + } + + return url; +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..d7ac600 --- /dev/null +++ b/index.html @@ -0,0 +1,211 @@ + + + + + + + +Manage & Modify ggplot figures using ggfigdone • ggfigdone + + + + + + + + + + + + +
    +
    + + + + +
    +
    + +
    +

    +
    +
    + +
    +

    Description +

    +

    When you prepare a presentation or a report, you often need to manage a large number of ggplot figures. You need to change the figure size, modify the title, label, themes, etc. It is inconvinient to go back to the original code to make these changes. This package provides a simple way to manage ggplot figures. You can easily add the figure to the database and update them later using CLI (command line interface) or GUI (graphical user interface).

    +
    +ggfigdone_demo
    ggfigdone_demo
    +
    +
    +
    +

    Installation +

    +

    Install the development version from GitHub:

    +
    +# install.packages("remotes")
    +remotes::install_github("wenjie1991/ggfigdone")
    +
    +
    +

    Demo +

    +
    +

    Initialize the database +

    +

    First, you need to initialize the database and add figures to it.

    +

    ```{r, eval=FALSE} library(ggfigdone)

    +
    +
    +
    +

    Initial ggfigdone database using fd_init + +

    +
    +
    +

    The database location is ./fd_dir + +

    +

    fo = fd_init(“./fd_dir”, rm_exist = T)

    +
    +
    +

    Draw a ggplot figure +

    +

    g = ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()

    +
    +
    +

    Add the figure to the database +

    +

    fd_add(g = g, name = “fig1”, fo, overwrite = T)

    +
    +
    +

    Add the same figure with a different name +

    +

    fd_add(g = g, name = “fig2”, fo, overwrite = T)

    +
    +
    +

    The hard disk database is automatically updated, no need to save operations. +

    +
    
    +### Manage the figures in browser
    +
    +Then you can start the server and open the browser to manage the figures.
    +
    +```{r, eval=FALSE}
    +## Load the database
    +fo = fd_load("./fd_dir")
    +
    +## Start the server and open the browser
    +fd_server("./fd_dir")
    +
    +
    +

    Contribution +

    +

    This package is being developed. Feel free to contribute to the package by sending pull requests or creating issues.

    +
    +
    +

    License +

    +

    MIT License

    +
    +
    + +
    + + +
    + + +
    + +
    +

    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    +
    + + + + + + + + diff --git a/link.svg b/link.svg new file mode 100644 index 0000000..88ad827 --- /dev/null +++ b/link.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/pkgdown.css b/pkgdown.css new file mode 100644 index 0000000..80ea5b8 --- /dev/null +++ b/pkgdown.css @@ -0,0 +1,384 @@ +/* Sticky footer */ + +/** + * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ + * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css + * + * .Site -> body > .container + * .Site-content -> body > .container .row + * .footer -> footer + * + * Key idea seems to be to ensure that .container and __all its parents__ + * have height set to 100% + * + */ + +html, body { + height: 100%; +} + +body { + position: relative; +} + +body > .container { + display: flex; + height: 100%; + flex-direction: column; +} + +body > .container .row { + flex: 1 0 auto; +} + +footer { + margin-top: 45px; + padding: 35px 0 36px; + border-top: 1px solid #e5e5e5; + color: #666; + display: flex; + flex-shrink: 0; +} +footer p { + margin-bottom: 0; +} +footer div { + flex: 1; +} +footer .pkgdown { + text-align: right; +} +footer p { + margin-bottom: 0; +} + +img.icon { + float: right; +} + +/* Ensure in-page images don't run outside their container */ +.contents img { + max-width: 100%; + height: auto; +} + +/* Fix bug in bootstrap (only seen in firefox) */ +summary { + display: list-item; +} + +/* Typographic tweaking ---------------------------------*/ + +.contents .page-header { + margin-top: calc(-60px + 1em); +} + +dd { + margin-left: 3em; +} + +/* Section anchors ---------------------------------*/ + +a.anchor { + display: none; + margin-left: 5px; + width: 20px; + height: 20px; + + background-image: url(./link.svg); + background-repeat: no-repeat; + background-size: 20px 20px; + background-position: center center; +} + +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline-block; +} + +/* Fixes for fixed navbar --------------------------*/ + +.contents h1, .contents h2, .contents h3, .contents h4 { + padding-top: 60px; + margin-top: -40px; +} + +/* Navbar submenu --------------------------*/ + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu>.dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover>.dropdown-menu { + display: block; +} + +.dropdown-submenu>a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover>a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left>.dropdown-menu { + left: -100%; + margin-left: 10px; + border-radius: 6px 0 6px 6px; +} + +/* Sidebar --------------------------*/ + +#pkgdown-sidebar { + margin-top: 30px; + position: -webkit-sticky; + position: sticky; + top: 70px; +} + +#pkgdown-sidebar h2 { + font-size: 1.5em; + margin-top: 1em; +} + +#pkgdown-sidebar h2:first-child { + margin-top: 0; +} + +#pkgdown-sidebar .list-unstyled li { + margin-bottom: 0.5em; +} + +/* bootstrap-toc tweaks ------------------------------------------------------*/ + +/* All levels of nav */ + +nav[data-toggle='toc'] .nav > li > a { + padding: 4px 20px 4px 6px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; +} + +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 5px; + color: inherit; + border-left: 1px solid #878787; +} + +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 5px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; + border-left: 2px solid #878787; +} + +/* Nav: second level (shown on .active) */ + +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} + +nav[data-toggle='toc'] .nav .nav > li > a { + padding-left: 16px; + font-size: 1.35rem; +} + +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 15px; +} + +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 15px; + font-weight: 500; + font-size: 1.35rem; +} + +/* orcid ------------------------------------------------------------------- */ + +.orcid { + font-size: 16px; + color: #A6CE39; + /* margins are required by official ORCID trademark and display guidelines */ + margin-left:4px; + margin-right:4px; + vertical-align: middle; +} + +/* Reference index & topics ----------------------------------------------- */ + +.ref-index th {font-weight: normal;} + +.ref-index td {vertical-align: top; min-width: 100px} +.ref-index .icon {width: 40px;} +.ref-index .alias {width: 40%;} +.ref-index-icons .alias {width: calc(40% - 40px);} +.ref-index .title {width: 60%;} + +.ref-arguments th {text-align: right; padding-right: 10px;} +.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} +.ref-arguments .name {width: 20%;} +.ref-arguments .desc {width: 80%;} + +/* Nice scrolling for wide elements --------------------------------------- */ + +table { + display: block; + overflow: auto; +} + +/* Syntax highlighting ---------------------------------------------------- */ + +pre, code, pre code { + background-color: #f8f8f8; + color: #333; +} +pre, pre code { + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; +} + +pre { + border: 1px solid #eee; +} + +pre .img, pre .r-plt { + margin: 5px 0; +} + +pre .img img, pre .r-plt img { + background-color: #fff; +} + +code a, pre a { + color: #375f84; +} + +a.sourceLine:hover { + text-decoration: none; +} + +.fl {color: #1514b5;} +.fu {color: #000000;} /* function */ +.ch,.st {color: #036a07;} /* string */ +.kw {color: #264D66;} /* keyword */ +.co {color: #888888;} /* comment */ + +.error {font-weight: bolder;} +.warning {font-weight: bolder;} + +/* Clipboard --------------------------*/ + +.hasCopyButton { + position: relative; +} + +.btn-copy-ex { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.hasCopyButton:hover button.btn-copy-ex { + visibility: visible; +} + +/* headroom.js ------------------------ */ + +.headroom { + will-change: transform; + transition: transform 200ms linear; +} +.headroom--pinned { + transform: translateY(0%); +} +.headroom--unpinned { + transform: translateY(-100%); +} + +/* mark.js ----------------------------*/ + +mark { + background-color: rgba(255, 255, 51, 0.5); + border-bottom: 2px solid rgba(255, 153, 51, 0.3); + padding: 1px; +} + +/* vertical spacing after htmlwidgets */ +.html-widget { + margin-bottom: 10px; +} + +/* fontawesome ------------------------ */ + +.fab { + font-family: "Font Awesome 5 Brands" !important; +} + +/* don't display links in code chunks when printing */ +/* source: https://stackoverflow.com/a/10781533 */ +@media print { + code a:link:after, code a:visited:after { + content: ""; + } +} + +/* Section anchors --------------------------------- + Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 +*/ + +div.csl-bib-body { } +div.csl-entry { + clear: both; +} +.hanging-indent div.csl-entry { + margin-left:2em; + text-indent:-2em; +} +div.csl-left-margin { + min-width:2em; + float:left; +} +div.csl-right-inline { + margin-left:2em; + padding-left:1em; +} +div.csl-indent { + margin-left: 2em; +} diff --git a/pkgdown.js b/pkgdown.js new file mode 100644 index 0000000..6f0eee4 --- /dev/null +++ b/pkgdown.js @@ -0,0 +1,108 @@ +/* http://gregfranko.com/blog/jquery-best-practices/ */ +(function($) { + $(function() { + + $('.navbar-fixed-top').headroom(); + + $('body').css('padding-top', $('.navbar').height() + 10); + $(window).resize(function(){ + $('body').css('padding-top', $('.navbar').height() + 10); + }); + + $('[data-toggle="tooltip"]').tooltip(); + + var cur_path = paths(location.pathname); + var links = $("#navbar ul li a"); + var max_length = -1; + var pos = -1; + for (var i = 0; i < links.length; i++) { + if (links[i].getAttribute("href") === "#") + continue; + // Ignore external links + if (links[i].host !== location.host) + continue; + + var nav_path = paths(links[i].pathname); + + var length = prefix_length(nav_path, cur_path); + if (length > max_length) { + max_length = length; + pos = i; + } + } + + // Add class to parent
  • , and enclosing
  • if in dropdown + if (pos >= 0) { + var menu_anchor = $(links[pos]); + menu_anchor.parent().addClass("active"); + menu_anchor.closest("li.dropdown").addClass("active"); + } + }); + + function paths(pathname) { + var pieces = pathname.split("/"); + pieces.shift(); // always starts with / + + var end = pieces[pieces.length - 1]; + if (end === "index.html" || end === "") + pieces.pop(); + return(pieces); + } + + // Returns -1 if not found + function prefix_length(needle, haystack) { + if (needle.length > haystack.length) + return(-1); + + // Special case for length-0 haystack, since for loop won't run + if (haystack.length === 0) { + return(needle.length === 0 ? 0 : -1); + } + + for (var i = 0; i < haystack.length; i++) { + if (needle[i] != haystack[i]) + return(i); + } + + return(haystack.length); + } + + /* Clipboard --------------------------*/ + + function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle=element.getAttribute('data-original-title'); + element.setAttribute('data-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-original-title', tooltipOriginalTitle); + } + + if(ClipboardJS.isSupported()) { + $(document).ready(function() { + var copyButton = ""; + + $("div.sourceCode").addClass("hasCopyButton"); + + // Insert copy buttons: + $(copyButton).prependTo(".hasCopyButton"); + + // Initialize tooltips: + $('.btn-copy-ex').tooltip({container: 'body'}); + + // Initialize clipboard: + var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { + text: function(trigger) { + return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); + } + }); + + clipboardBtnCopies.on('success', function(e) { + changeTooltipMessage(e.trigger, 'Copied!'); + e.clearSelection(); + }); + + clipboardBtnCopies.on('error', function() { + changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + }); + }); + } +})(window.jQuery || window.$) diff --git a/pkgdown.yml b/pkgdown.yml new file mode 100644 index 0000000..3152654 --- /dev/null +++ b/pkgdown.yml @@ -0,0 +1,5 @@ +pandoc: 3.2.1 +pkgdown: 2.1.0.9000 +pkgdown_sha: 1d40a80e6b3564a6d7da0ce467b0a4570aa5665e +articles: {} +last_built: 2024-08-09T14:36Z diff --git a/reference/Rplot001.png b/reference/Rplot001.png new file mode 100644 index 0000000000000000000000000000000000000000..17a358060aed2a86950757bbd25c6f92c08c458f GIT binary patch literal 1011 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|=9Be?5+AI5}0x7m6Z+90U4Fo@(ch>_c&H|6f zVg?3oArNM~bhqvg0|WD9PZ!6KiaBo&GBN^{G%5UFpXcEKVvd5*5Eu=C0SJK)8A6*F U7`aXvEC5;V>FVdQ&MBb@00SN#Z2$lO literal 0 HcmV?d00001 diff --git a/reference/fd_add.html b/reference/fd_add.html new file mode 100644 index 0000000..0d79150 --- /dev/null +++ b/reference/fd_add.html @@ -0,0 +1,165 @@ + +Add a ggplot object to the ggfigdone database — fd_add • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function adds a ggplot object to the ggfigdone database. It can also be utilized to update an existing figure using its figure ID.

    +
    + +
    +
    fd_add(
    +  g,
    +  name,
    +  fdObj,
    +  width = 5,
    +  height = 5,
    +  units = "cm",
    +  dpi = 200,
    +  overwrite = F,
    +  id = uuid::UUIDgenerate()
    +)
    +
    + +
    +

    Arguments

    + + +
    g
    +

    A ggplot object.

    + + +
    name
    +

    A character string representing the figure name.

    + + +
    fdObj
    +

    An object of class fdObj.

    + + +
    width
    +

    A numeric value specifying the width of the canvas.

    + + +
    height
    +

    A numeric value specifying the height of the canvas.

    + + +
    units
    +

    A character string indicating the units of the canvas.

    + + +
    dpi
    +

    A numeric value denoting the dpi of the canvas.

    + + +
    overwrite
    +

    A logical value. If set to TRUE, the function will overwrite the figure if it already exists. If set to FALSE, the function will terminate with an error message.

    + + +
    id
    +

    A character string representing the figure ID. If not provided, the function will generate a random ID. Alternatively, an existing ID can be provided to update the corresponding figure.

    + +
    +
    +

    Value

    +

    An object of class fdObj.

    +
    + +
    +

    Examples

    +
    library(ggplot2)
    +
    +## Initial ggfigdone database using `fd_init`
    +db_dir = file.path(tempdir(), "fd_add_exp")
    +fo = fd_init(db_dir, rm_exist = TRUE)
    +#> The database version is up-to-date.
    +
    +## Draw a ggplot figure
    +g = ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()
    +
    +## Add the figure to the database
    +fd_add(g = g, name  = "fig1", fo)
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> [1] TRUE
    +
    +## Add the same figure with a different name
    +fd_add(g = g, name  = "fig2", fo)
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> [1] TRUE
    +
    +## Show the updated ggfigdone database
    +print(fo)
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/fd_add_exp
    +#> ## Number of figures: 2
    +#> ## Last updated date: 2024-08-09 16:36:50
    +
    +
    +
    +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_canvas.html b/reference/fd_canvas.html new file mode 100644 index 0000000..d4df52e --- /dev/null +++ b/reference/fd_canvas.html @@ -0,0 +1,115 @@ + +Update the figure canvas size — fd_canvas • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function is designed to update the size of the figure canvas.

    +
    + +
    +
    fd_canvas(
    +  id,
    +  fdObj,
    +  width = fdObj$env[[id]]$canvas_options$width,
    +  height = fdObj$env[[id]]$canvas_options$height,
    +  units = fdObj$env[[id]]$canvas_options$units,
    +  dpi = fdObj$env[[id]]$canvas_options$dpi
    +)
    +
    + +
    +

    Arguments

    + + +
    id
    +

    A character string representing the figure ID.

    + + +
    fdObj
    +

    An object of class fdObj.

    + + +
    width
    +

    A numeric value specifying the width of the canvas.

    + + +
    height
    +

    A numeric value specifying the height of the canvas.

    + + +
    units
    +

    A character string indicating the units of measurement for the canvas, such as "cm", "in", "mm", or "px".

    + + +
    dpi
    +

    A numeric value denoting the dots per inch (DPI) of the canvas.

    + +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_init.html b/reference/fd_init.html new file mode 100644 index 0000000..c4af7a4 --- /dev/null +++ b/reference/fd_init.html @@ -0,0 +1,120 @@ + +Initiates the ggfigdone database — fd_init • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function generates a folder that serves as a database for ggfigdone.

    +
    + +
    +
    fd_init(dir, recursive = TRUE, rm_exist = FALSE, ...)
    +
    + +
    +

    Arguments

    + + +
    dir
    +

    A character string specifying the directory path.

    + + +
    recursive
    +

    A logical value. If TRUE, the function will create the directory along with any necessary parent directories if they do not already exist. If FALSE, the function will create the directory only if its parent directory already exists.

    + + +
    rm_exist
    +

    A logical value. If TRUE, the function will remove the content in the directory if it already exists. If FALSE, the function will ask the user whether to remove the content in the directory.

    + + +
    ...
    +

    Additional arguments to be passed to fd_load function.

    + +
    +
    +

    Value

    +

    An object of class fdObj.

    +
    + +
    +

    Examples

    +
    library(ggplot2)
    +## create ggfigdone database in a temporary directory
    +db_dir = file.path(tempdir(), "fd_init")
    +
    +## Initate the ggfigdone database
    +fd_init(db_dir, rm_exist = TRUE)
    +#> The database version is up-to-date.
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/fd_init
    +#> ## Number of figures: 0
    +#> ## Last updated date: 2024-08-09 16:36:51.388144
    +
    +
    +
    +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_load.html b/reference/fd_load.html new file mode 100644 index 0000000..b9fbb60 --- /dev/null +++ b/reference/fd_load.html @@ -0,0 +1,119 @@ + +Load the ggfigdone database — fd_load • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function loads the ggfigdone database from the disk.

    +
    + +
    +
    fd_load(dir, auto_database_upgrade = TRUE)
    +
    + +
    +

    Arguments

    + + +
    dir
    +

    A character string representing the directory path.

    + + +
    auto_database_upgrade
    +

    A logical value. If TRUE, the function will automatically upgrade the database to the latest version. +If FALSE, you need to manually save the data using the fd_save function.

    + +
    +
    +

    Value

    +

    An object of class fdObj.

    +
    + +
    +

    Examples

    +
    library(ggplot2)
    +## create ggfigdone database in a temporary directory
    +db_dir = file.path(tempdir(), "fd_load")
    +fd_init(db_dir, rm_exist = TRUE)
    +#> The database version is up-to-date.
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/fd_load
    +#> ## Number of figures: 0
    +#> ## Last updated date: 2024-08-09 16:36:51.679852
    +
    +## Load the ggfigdone database
    +fd_load(db_dir)
    +#> The database version is up-to-date.
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/fd_load
    +#> ## Number of figures: 0
    +#> ## Last updated date: 2024-08-09 16:36:51.71277
    +
    +
    +
    +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_ls.html b/reference/fd_ls.html new file mode 100644 index 0000000..c2e9b11 --- /dev/null +++ b/reference/fd_ls.html @@ -0,0 +1,107 @@ + +List the figures — fd_ls • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function provides a List or data.frame of figures along with their associated parameters.

    +
    + +
    +
    fd_ls(fdObj)
    +
    +fd_df(fdObj)
    +
    + +
    +

    Arguments

    + + +
    fdObj
    +

    An instance of the fdObj class.

    + +
    +
    +

    Value

    +

    A List/data.frame containing the figures along with their respective parameters.

    +
    +
    +

    Details

    +

    The parameters include:

    • id: The unique identifier for the figure

    • +
    • name: The name of the figure

    • +
    • created_date: The date the figure was created

    • +
    • updated_date: The date the figure was last updated

    • +
    • width: The width of the canvas

    • +
    • height: The height of the canvas

    • +
    • units: The units of measurement for the canvas

    • +
    • dpi: The dots per inch (DPI) of the canvas

    • +
    • file_name: The name of the file

    • +
    • plot_labels: The labels used in the plot

    • +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_merge.html b/reference/fd_merge.html new file mode 100644 index 0000000..9ac57bc --- /dev/null +++ b/reference/fd_merge.html @@ -0,0 +1,139 @@ + +Merge ggfigdone databases — fd_merge • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function merges two ggfigdone databases. +The function will update the figures in the 'to' database with the figures in the 'from' database. +If there is a figure with the same ID in both databases, the function will keep the figure with the latest updated date or created date.

    +
    + +
    +
    fd_merge(from, to, replace = "updated_date")
    +
    + +
    +

    Arguments

    + + +
    from
    +

    An object of class fdObj that will be merged from.

    + + +
    to
    +

    An object of class fdObj that will be merged to.

    + + +
    replace
    +

    A character string specifying the method to keep the figure with the unique ID. It can be either "updated_date" or "created_date".

    + +
    +
    +

    Value

    +

    An object of class fdObj with the merged database.

    +
    + +
    +

    Examples

    +
    library(ggplot2)
    +## create ggfigdone database in a temporary directory
    +db_dir1 = file.path(tempdir(), "db1")
    +db_dir2 = file.path(tempdir(), "db2")
    +fo1 = fd_init(db_dir1, rm_exist = TRUE)
    +#> The database version is up-to-date.
    +fo2 = fd_init(db_dir2, rm_exist = TRUE)
    +#> The database version is up-to-date.
    +
    +## Draw a ggplot figure
    +g = ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()
    +
    +## Add the figure to the database
    +fd_add(g = g, name  = "fig1", fdObj = fo1)
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> [1] TRUE
    +fd_add(g = g + theme_classic(), name  = "fig2", fdObj = fo2)
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> [1] TRUE
    +
    +## Merge the databases
    +fo_merge = fd_merge(from = fo1, to = fo2, replace = "updated_date")
    +
    +## Show the updated ggfigdone database
    +print(fo_merge)
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/db2
    +#> ## Number of figures: 2
    +#> ## Last updated date: 2024-08-09 16:36:52
    +
    +##
    +
    +
    +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_rm.html b/reference/fd_rm.html new file mode 100644 index 0000000..03d432a --- /dev/null +++ b/reference/fd_rm.html @@ -0,0 +1,92 @@ + +Remove a figure — fd_rm • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function removes a figure from the ggfigdone database.

    +
    + +
    +
    fd_rm(id, fdObj)
    +
    + +
    +

    Arguments

    + + +
    id
    +

    A character string representing the figure ID.

    + + +
    fdObj
    +

    An object of class fdObj.

    + +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_save.html b/reference/fd_save.html new file mode 100644 index 0000000..7202a70 --- /dev/null +++ b/reference/fd_save.html @@ -0,0 +1,96 @@ + +Update the ggfigdone database changes to the disk — fd_save • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function saves the ggfigdone data to the disk. +By default, when using the fd_load funciton to load the databse, the data will be automatically saved to the disk when changes are made. +But if you set the auto_database_upgrade argument to FALSE in fd_load, you need to manually save the data using this function.

    +
    + +
    +
    fd_save(fdObj, do_lock = TRUE)
    +
    + +
    +

    Arguments

    + + +
    fdObj
    +

    An object of class fdObj.

    + + +
    do_lock
    +

    A logical value. If TRUE, the function will lock the database file when saving the data.

    + +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_server.html b/reference/fd_server.html new file mode 100644 index 0000000..160e95b --- /dev/null +++ b/reference/fd_server.html @@ -0,0 +1,119 @@ + +Initiates a server for ggfigdone — fd_server • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function initiates a server for ggfigdone, which can be accessed through a web browser. +The web application enables users to manage and modify ggplot figures with ease. +Users have the ability to:

    • Update the ggplot code by adding new components.

    • +
    • Adjust the figure size.

    • +
    • Download the figure as a PDF.

    • +
    • Download the data used to create the figure.

    • +
    + +
    +
    fd_server(dir, host = "0.0.0.0", port = 8080, auto_open = TRUE)
    +
    + +
    +

    Arguments

    + + +
    dir
    +

    The directory of the ggfigdone database.

    + + +
    host
    +

    The host on which the server will run; the default is '0.0.0.0'.

    + + +
    port
    +

    The port on which the server will run; the default is 8080.

    + + +
    auto_open
    +

    A logical value indicating whether the server should be opened in a web browser; the default is TRUE.

    + +
    +
    +

    Details

    +

    By default the function will open a web browser to access the server.

    +

    You can configure the web browser by setting the options:

    +

    options(browser = "firefox")  # Set Firefox as the default

    +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_unique.html b/reference/fd_unique.html new file mode 100644 index 0000000..3cb52cb --- /dev/null +++ b/reference/fd_unique.html @@ -0,0 +1,139 @@ + +Keep figure name unique by removing older figures with the same name — fd_unique • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function keeps the figure name unique by removing the older figures with the same name. +Users can specify whether to keep the figure with the latest updated date or the latest created date. +If a figure is created without changing, the created date and updated date are the same.

    +
    + +
    +
    fd_unique(fdObj, by = "updated_date")
    +
    + +
    +

    Arguments

    + + +
    fdObj
    +

    An object of class fdObj.

    + + +
    by
    +

    A character string specifying the method to keep the figure with the unique name. It can be either "updated_date" or "created_date".

    + +
    +
    +

    Value

    +

    An object of class fdObj.

    +
    + +
    +

    Examples

    +
    library(ggplot2)
    +## create ggfigdone database in a temporary directory
    +db_dir = file.path(tempdir(), "fd_unique")
    +fo = fd_init(db_dir, rm_exist = TRUE)
    +#> The database version is up-to-date.
    +
    +## Draw a ggplot figure
    +g = ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()
    +
    +## Add the figure to the database
    +fd_add(g = g, name  = "fig1", fdObj = fo)
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> [1] TRUE
    +
    +## Add the another figure with the same name
    +fd_add(g = g + theme_classic(), name  = "fig1", fdObj = fo)
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> [1] TRUE
    +
    +## Keep the figure with the latest created date
    +fd_unique(fdObj = fo, by = "created_date")
    +#> 1 figures with the name 'fig1' are removed.
    +#> Automatic saving the ggfigdone data to the disk ...
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/fd_unique
    +#> ## Number of figures: 1
    +#> ## Last updated date: 2024-08-09 16:36:53
    +
    +## Show the updated ggfigdone database
    +print(fo)
    +#> ##########
    +#> ## ggfigdone database: /tmp/Rtmp7ds0uT/fd_unique
    +#> ## Number of figures: 1
    +#> ## Last updated date: 2024-08-09 16:36:53
    +
    +
    +
    +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/fd_update_fig.html b/reference/fd_update_fig.html new file mode 100644 index 0000000..4e06af9 --- /dev/null +++ b/reference/fd_update_fig.html @@ -0,0 +1,100 @@ + +Update a figure using ggplot expression — fd_update_fig • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    This function updates a figure using a ggplot expression.

    +
    + +
    +
    fd_update_fig(id, expr, fdObj)
    +
    + +
    +

    Arguments

    + + +
    id
    +

    A character string of the figure id

    + + +
    expr
    +

    A character string of the ggplot expression

    + + +
    fdObj
    +

    An object of class fdObj

    + +
    +
    +

    Value

    +

    A character string of the status

    +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/ggfigdone.html b/reference/ggfigdone.html new file mode 100644 index 0000000..9330cf2 --- /dev/null +++ b/reference/ggfigdone.html @@ -0,0 +1,94 @@ + +ggfigdone — ggfigdone • ggfigdone + + +
    +
    + + + +
    +
    + + +
    +

    ggfigdone: Manage & Modify ggplot figures easily

    +
    + + +
    +

    Details

    +

    When preparing a presentation or report, it is often necessary to manage a substantial number of ggplot figures. +Adjustments such as changing the figure size, modifying titles, labels, and themes may be required. +Returning to the original code to implement these changes can be inconvenient. +This package offers a straightforward method for managing ggplot figures. +Figures can be easily added to the database and subsequently updated using either a GUI (graphical user interface) and/or CLI (command line interface).

    +
    +
    +

    See also

    +

    Useful links:

    +
    +
    +

    Author

    +

    Maintainer: Wenjie SUN sunwjie@gmail.com (ORCID)

    +
    + +
    + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/reference/index.html b/reference/index.html new file mode 100644 index 0000000..d2b42f7 --- /dev/null +++ b/reference/index.html @@ -0,0 +1,122 @@ + +Package index • ggfigdone + + +
    +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    All functions

    +

    +
    +

    fd_add()

    +

    Add a ggplot object to the ggfigdone database

    +

    fd_canvas()

    +

    Update the figure canvas size

    +

    fd_init()

    +

    Initiates the ggfigdone database

    +

    fd_load()

    +

    Load the ggfigdone database

    +

    fd_ls() fd_df()

    +

    List the figures

    +

    fd_merge()

    +

    Merge ggfigdone databases

    +

    fd_rm()

    +

    Remove a figure

    +

    fd_save()

    +

    Update the ggfigdone database changes to the disk

    +

    fd_server()

    +

    Initiates a server for ggfigdone

    +

    fd_unique()

    +

    Keep figure name unique by removing older figures with the same name

    +

    fd_update_fig()

    +

    Update a figure using ggplot expression

    +

    ggfigdone-package ggfigdone

    +

    ggfigdone

    + + +
    + + +
    + +
    +

    Site built with pkgdown 2.1.0.9000.

    +
    + +
    + + + + + + + + diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..41595d4 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,20 @@ + +/404.html +/LICENSE-text.html +/authors.html +/index.html +/reference/fd_add.html +/reference/fd_canvas.html +/reference/fd_init.html +/reference/fd_load.html +/reference/fd_ls.html +/reference/fd_merge.html +/reference/fd_rm.html +/reference/fd_save.html +/reference/fd_server.html +/reference/fd_unique.html +/reference/fd_update_fig.html +/reference/ggfigdone.html +/reference/index.html + +