From 89b9a6b728c010da3e6595f66da0871e2caa185f Mon Sep 17 00:00:00 2001 From: thomasp85 Date: Mon, 27 Nov 2023 13:22:18 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20r-lib/sc?= =?UTF-8?q?ales@974c16b485ba39a7bebc5ec62470dbaa5b805ee9=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev/pkgdown.yml | 2 +- dev/reference/col_numeric-1.png | Bin 19262 -> 23319 bytes dev/reference/col_numeric-2.png | Bin 54623 -> 49867 bytes dev/reference/col_numeric-3.png | Bin 36080 -> 33082 bytes dev/reference/rescale.html | 20 ++++++++++---------- dev/reference/rescale_max.html | 18 +++++++++--------- dev/reference/rescale_mid.html | 20 ++++++++++---------- dev/reference/transform_timespan-3.png | Bin 9761 -> 9742 bytes dev/search.json | 2 +- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/dev/pkgdown.yml b/dev/pkgdown.yml index 470bc3c9..0f75cd5e 100644 --- a/dev/pkgdown.yml +++ b/dev/pkgdown.yml @@ -2,7 +2,7 @@ pandoc: 2.19.2 pkgdown: 2.0.7 pkgdown_sha: ~ articles: {} -last_built: 2023-11-27T13:11Z +last_built: 2023-11-27T13:21Z urls: reference: https://scales.r-lib.org/reference article: https://scales.r-lib.org/articles diff --git a/dev/reference/col_numeric-1.png b/dev/reference/col_numeric-1.png index 66e947b367fae031cc6dfdb84e6083c14a4b70e4..c21933e9b6c6868b960ab35f5b3e216be3e4d68d 100644 GIT binary patch literal 23319 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 P4R+f3*Xm!c{QiFdu_amK literal 19262 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

and!ZI&w)UUI=k6ntseA& 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 diff --git a/dev/reference/col_numeric-3.png b/dev/reference/col_numeric-3.png index 09e1c1897616b2ced4110c4c8841fc7a1309e2c9..f89d20d247cf12deb38f8353352e691f7abe90d6 100644 GIT binary patch literal 33082 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 [91] 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596 #> [97] 0.96969697 0.97979798 0.98989899 1.00000000 rescale(runif(50)) -#> [1] 0.097863448 0.089205267 0.000000000 0.918025709 0.682348642 -#> [6] 0.219357716 0.894298526 0.490998516 0.448452794 0.160434625 -#> [11] 0.568181349 0.037845759 0.408633935 0.734251977 0.137752396 -#> [16] 0.488061570 1.000000000 0.481601429 0.235140261 0.112163563 -#> [21] 0.587820775 0.903681538 0.761873897 0.513440891 0.094846833 -#> [26] 0.877818190 0.241890223 0.824663619 0.273589691 0.553163762 -#> [31] 0.623910550 0.106251310 0.284481254 0.376040506 0.802524279 -#> [36] 0.332143827 0.604657132 0.001731694 0.149926245 0.925675077 -#> [41] 0.646065236 0.651165070 0.352991560 0.116063163 0.690422331 -#> [46] 0.416967837 0.485344498 0.450347939 0.137698816 0.199607430 +#> [1] 1.000000000 0.801788402 0.566329958 0.477674366 0.799235843 +#> [6] 0.467064916 0.292780220 0.707091824 0.478849566 0.485313645 +#> [11] 0.006679436 0.000000000 0.753858548 0.047848086 0.751303985 +#> [16] 0.800691254 0.802743043 0.327005752 0.342594704 0.305077580 +#> [21] 0.261204709 0.171938702 0.837002442 0.879719716 0.728635154 +#> [26] 0.271101572 0.547483437 0.125137635 0.848642139 0.815667560 +#> [31] 0.207476519 0.315678604 0.105826554 0.939293085 0.167687665 +#> [36] 0.070080688 0.935275055 0.694042384 0.034143383 0.739663455 +#> [41] 0.236229687 0.270742788 0.376306072 0.922616630 0.371208908 +#> [46] 0.902328213 0.439406461 0.300990519 0.998104964 0.739338462 rescale(1) #> [1] 0.5 diff --git a/dev/reference/rescale_max.html b/dev/reference/rescale_max.html index 33a65240..87f72f8c 100644 --- a/dev/reference/rescale_max.html +++ b/dev/reference/rescale_max.html @@ -90,15 +90,15 @@

Examples#> [79] 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 #> [92] 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00 rescale_max(runif(50)) -#> [1] 0.81087775 0.14015939 0.52048495 1.00000000 0.09511294 0.37552283 -#> [7] 0.78010890 0.13344161 0.36574935 0.96226094 0.05733376 0.84953049 -#> [13] 0.73332758 0.07571846 0.04687065 0.95350365 0.38193952 0.13087788 -#> [19] 0.13144049 0.08379662 0.58081502 0.79378594 0.25921533 0.04259798 -#> [25] 0.58907035 0.60047506 0.16642745 0.16000040 0.32077432 0.25734708 -#> [31] 0.07410776 0.98228590 0.32979666 0.98376865 0.14351964 0.83465088 -#> [37] 0.04272907 0.41651989 0.83476742 0.89837459 0.81835351 0.51062215 -#> [43] 0.06033641 0.03406351 0.80711335 0.96169187 0.18048723 0.44414152 -#> [49] 0.34477836 0.56251887 +#> [1] 0.27369709 0.52698031 1.00000000 0.25597443 0.28244020 0.11857963 +#> [7] 0.66147416 0.15135741 0.19339969 0.69845088 0.20719670 0.61727647 +#> [13] 0.27482644 0.54161863 0.78982443 0.29105300 0.91559930 0.53704420 +#> [19] 0.22163295 0.09992252 0.04028012 0.79419771 0.21113055 0.72906748 +#> [25] 0.02359061 0.63699133 0.45191112 0.17360601 0.74575918 0.41085134 +#> [31] 0.82922812 0.66481864 0.30209040 0.33313211 0.49910552 0.50825004 +#> [37] 0.02186143 0.33980433 0.61787962 0.41238422 0.95225887 0.03933338 +#> [43] 0.32927835 0.04756909 0.31867498 0.73505067 0.03616493 0.70026714 +#> [49] 0.67621864 0.86392692 rescale_max(1) #> [1] 1 diff --git a/dev/reference/rescale_mid.html b/dev/reference/rescale_mid.html index 538b89a6..c21f62b6 100644 --- a/dev/reference/rescale_mid.html +++ b/dev/reference/rescale_mid.html @@ -132,16 +132,16 @@

Examples#> [91] 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596 #> [97] 0.96969697 0.97979798 0.98989899 1.00000000 rescale_mid(runif(50), mid = 0.5) -#> [1] 0.585047180 0.957953185 0.748511831 0.076787166 1.000000000 -#> [6] 0.208414952 0.883962809 0.257569092 0.880418316 0.292916994 -#> [11] 0.795714422 0.159036622 0.099984847 0.008641997 0.639744044 -#> [16] 0.764131247 0.109223026 0.457422736 0.811209592 0.877100391 -#> [21] 0.131980582 0.869706561 0.769706887 0.989167733 0.863721648 -#> [26] 0.247551748 0.643129347 0.113905987 0.098085140 0.542676225 -#> [31] 0.048620695 0.153680485 0.556706744 0.630888396 0.718784483 -#> [36] 0.087316760 0.718583090 0.085383236 0.766997455 0.888752983 -#> [41] 0.201922690 0.778570781 0.936478837 0.846148528 0.735543216 -#> [46] 0.874812359 0.192393092 0.586926775 0.363186775 0.678246448 +#> [1] 0.810389535 0.248655241 0.000000000 0.411635867 0.070357797 +#> [6] 0.418808298 0.931424801 0.577733122 0.959025607 0.483273479 +#> [11] 0.819619058 0.308968339 0.259139803 0.654121593 0.792905088 +#> [16] 0.752380867 0.151357830 0.922757853 0.003063467 0.078952394 +#> [21] 0.291009603 0.461543533 0.929800523 0.011074909 0.519469129 +#> [26] 0.217250708 0.986654286 0.488318061 0.193897185 0.083516717 +#> [31] 0.141218707 0.527701932 0.518150206 0.270339823 0.089028950 +#> [36] 0.924165329 0.717205570 0.640933923 0.867041029 0.265822223 +#> [41] 0.976638900 0.449577554 0.644784558 0.785676055 0.666903616 +#> [46] 0.049292305 0.628375465 0.117884626 0.662360485 0.061075299 rescale_mid(1) #> [1] 0.5 diff --git a/dev/reference/transform_timespan-3.png b/dev/reference/transform_timespan-3.png index 3a774c28b249ab6a5a1d1189a66523082b7aced3..9f45063f588c415ff884029781901a2c3008d74f 100644 GIT binary patch literal 9742 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 r=l}dW&fj4kfq4Yx5%_ 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 vy% mutate(date = make_date(year, month, 1)) %>% group_by(city) %>% filter(min(sales) > 5e2) %>% ggplot(aes(date, sales, group = city)) + geom_line(na.rm = TRUE) + scale_x_date( NULL, breaks = scales::breaks_width(\"2 years\"), labels = scales::label_date(\"'%y\") ) + scale_y_log10( \"Total sales\", labels = scales::label_number(scale_cut = scales::cut_short_scale()) ) economics %>% filter(date < ymd(\"1970-01-01\")) %>% ggplot(aes(date, pce)) + geom_line() + scale_x_date(NULL, breaks = scales::breaks_width(\"3 months\"), labels = scales::label_date_short() ) + scale_y_continuous(\"Personal consumption expenditures\", breaks = scales::breaks_extended(8), labels = scales::label_dollar() )"},{"path":"https://scales.r-lib.org/dev/index.html","id":"advanced-features","dir":"","previous_headings":"Usage","what":"Advanced features","title":"Scale Functions for Visualization","text":"Scales colour palettes used power scales ggplot2, can use plotting system. following example shows might apply base plot. scales also gives users ability define apply custom transformation functions repeated use.","code":"library(scales) # pull a list of colours from any palette pal_viridis()(4) #> [1] \"#440154FF\" \"#31688EFF\" \"#35B779FF\" \"#FDE725FF\" # use in combination with baseR `palette()` to set new defaults palette(pal_brewer(palette = \"Set2\")(4)) par(mar = c(5, 5, 1, 1)) plot(Sepal.Length ~ Sepal.Width, data = iris, col = Species, pch = 20) # use new_transform to build a new transformation transform_logp3 <- new_transform( name = \"logp\", transform = function(x) log(x + 3), inverse = function(x) exp(x) - 3, breaks = log_breaks() ) dsamp <- sample_n(diamonds, 100) ggplot(dsamp, aes(carat, price, colour = color)) + geom_point() + scale_y_continuous(trans = transform_logp3)"},{"path":"https://scales.r-lib.org/dev/reference/Range.html","id":null,"dir":"Reference","previous_headings":"","what":"Mutable ranges — Range","title":"Mutable ranges — Range","text":"Mutable ranges two methods (train reset), make possible build complete ranges multiple passes.","code":""},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":null,"dir":"Reference","previous_headings":"","what":"Modify colour transparency — alpha","title":"Modify colour transparency — alpha","text":"Vectorised colour alpha.","code":""},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modify colour transparency — alpha","text":"","code":"alpha(colour, alpha = NA)"},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modify colour transparency — alpha","text":"colour colour alpha new alpha level [0,1]. alpha NA, existing alpha values preserved.","code":""},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Modify colour transparency — alpha","text":"","code":"alpha(\"red\", 0.1) #> [1] \"#FF00001A\" alpha(colours(), 0.5) #> [1] \"#FFFFFF80\" \"#F0F8FF80\" \"#FAEBD780\" \"#FFEFDB80\" \"#EEDFCC80\" #> [6] \"#CDC0B080\" \"#8B837880\" \"#7FFFD480\" \"#7FFFD480\" \"#76EEC680\" #> [11] \"#66CDAA80\" \"#458B7480\" \"#F0FFFF80\" \"#F0FFFF80\" \"#E0EEEE80\" #> [16] \"#C1CDCD80\" \"#838B8B80\" \"#F5F5DC80\" \"#FFE4C480\" \"#FFE4C480\" #> [21] \"#EED5B780\" \"#CDB79E80\" \"#8B7D6B80\" \"#00000080\" \"#FFEBCD80\" #> [26] \"#0000FF80\" \"#0000FF80\" \"#0000EE80\" \"#0000CD80\" \"#00008B80\" #> [31] \"#8A2BE280\" \"#A52A2A80\" \"#FF404080\" \"#EE3B3B80\" \"#CD333380\" #> [36] \"#8B232380\" \"#DEB88780\" \"#FFD39B80\" \"#EEC59180\" \"#CDAA7D80\" #> [41] \"#8B735580\" \"#5F9EA080\" \"#98F5FF80\" \"#8EE5EE80\" \"#7AC5CD80\" #> [46] \"#53868B80\" \"#7FFF0080\" \"#7FFF0080\" \"#76EE0080\" \"#66CD0080\" #> [51] \"#458B0080\" \"#D2691E80\" \"#FF7F2480\" \"#EE762180\" \"#CD661D80\" #> [56] \"#8B451380\" \"#FF7F5080\" \"#FF725680\" \"#EE6A5080\" \"#CD5B4580\" #> [61] \"#8B3E2F80\" \"#6495ED80\" \"#FFF8DC80\" \"#FFF8DC80\" \"#EEE8CD80\" #> [66] \"#CDC8B180\" \"#8B887880\" \"#00FFFF80\" \"#00FFFF80\" \"#00EEEE80\" #> [71] \"#00CDCD80\" \"#008B8B80\" \"#00008B80\" \"#008B8B80\" \"#B8860B80\" #> [76] \"#FFB90F80\" \"#EEAD0E80\" \"#CD950C80\" \"#8B650880\" \"#A9A9A980\" #> [81] \"#00640080\" \"#A9A9A980\" \"#BDB76B80\" \"#8B008B80\" \"#556B2F80\" #> [86] \"#CAFF7080\" \"#BCEE6880\" \"#A2CD5A80\" \"#6E8B3D80\" \"#FF8C0080\" #> [91] \"#FF7F0080\" \"#EE760080\" \"#CD660080\" \"#8B450080\" \"#9932CC80\" #> [96] \"#BF3EFF80\" \"#B23AEE80\" \"#9A32CD80\" \"#68228B80\" \"#8B000080\" #> [101] \"#E9967A80\" \"#8FBC8F80\" \"#C1FFC180\" \"#B4EEB480\" \"#9BCD9B80\" #> [106] \"#698B6980\" \"#483D8B80\" \"#2F4F4F80\" \"#97FFFF80\" \"#8DEEEE80\" #> [111] \"#79CDCD80\" \"#528B8B80\" \"#2F4F4F80\" \"#00CED180\" \"#9400D380\" #> [116] \"#FF149380\" \"#FF149380\" \"#EE128980\" \"#CD107680\" \"#8B0A5080\" #> [121] \"#00BFFF80\" \"#00BFFF80\" \"#00B2EE80\" \"#009ACD80\" \"#00688B80\" #> [126] \"#69696980\" \"#69696980\" \"#1E90FF80\" \"#1E90FF80\" \"#1C86EE80\" #> [131] \"#1874CD80\" \"#104E8B80\" \"#B2222280\" \"#FF303080\" \"#EE2C2C80\" #> [136] \"#CD262680\" \"#8B1A1A80\" \"#FFFAF080\" \"#228B2280\" \"#DCDCDC80\" #> [141] \"#F8F8FF80\" \"#FFD70080\" \"#FFD70080\" \"#EEC90080\" \"#CDAD0080\" #> [146] \"#8B750080\" \"#DAA52080\" \"#FFC12580\" \"#EEB42280\" \"#CD9B1D80\" #> [151] \"#8B691480\" \"#BEBEBE80\" \"#00000080\" \"#03030380\" \"#05050580\" #> [156] \"#08080880\" \"#0A0A0A80\" \"#0D0D0D80\" \"#0F0F0F80\" \"#12121280\" #> [161] \"#14141480\" \"#17171780\" \"#1A1A1A80\" \"#1C1C1C80\" \"#1F1F1F80\" #> [166] \"#21212180\" \"#24242480\" \"#26262680\" \"#29292980\" \"#2B2B2B80\" #> [171] \"#2E2E2E80\" \"#30303080\" \"#33333380\" \"#36363680\" \"#38383880\" #> [176] \"#3B3B3B80\" \"#3D3D3D80\" \"#40404080\" \"#42424280\" \"#45454580\" #> [181] \"#47474780\" \"#4A4A4A80\" \"#4D4D4D80\" \"#4F4F4F80\" \"#52525280\" #> [186] \"#54545480\" \"#57575780\" \"#59595980\" \"#5C5C5C80\" \"#5E5E5E80\" #> [191] \"#61616180\" \"#63636380\" \"#66666680\" \"#69696980\" \"#6B6B6B80\" #> [196] \"#6E6E6E80\" \"#70707080\" \"#73737380\" \"#75757580\" \"#78787880\" #> [201] \"#7A7A7A80\" \"#7D7D7D80\" \"#7F7F7F80\" \"#82828280\" \"#85858580\" #> [206] \"#87878780\" \"#8A8A8A80\" \"#8C8C8C80\" \"#8F8F8F80\" \"#91919180\" #> [211] \"#94949480\" \"#96969680\" \"#99999980\" \"#9C9C9C80\" \"#9E9E9E80\" #> [216] \"#A1A1A180\" \"#A3A3A380\" \"#A6A6A680\" \"#A8A8A880\" \"#ABABAB80\" #> [221] \"#ADADAD80\" \"#B0B0B080\" \"#B3B3B380\" \"#B5B5B580\" \"#B8B8B880\" #> [226] \"#BABABA80\" \"#BDBDBD80\" \"#BFBFBF80\" \"#C2C2C280\" \"#C4C4C480\" #> [231] \"#C7C7C780\" \"#C9C9C980\" \"#CCCCCC80\" \"#CFCFCF80\" \"#D1D1D180\" #> [236] \"#D4D4D480\" \"#D6D6D680\" \"#D9D9D980\" \"#DBDBDB80\" \"#DEDEDE80\" #> [241] \"#E0E0E080\" \"#E3E3E380\" \"#E5E5E580\" \"#E8E8E880\" \"#EBEBEB80\" #> [246] \"#EDEDED80\" \"#F0F0F080\" \"#F2F2F280\" \"#F5F5F580\" \"#F7F7F780\" #> [251] \"#FAFAFA80\" \"#FCFCFC80\" \"#FFFFFF80\" \"#00FF0080\" \"#00FF0080\" #> [256] \"#00EE0080\" \"#00CD0080\" \"#008B0080\" \"#ADFF2F80\" \"#BEBEBE80\" #> [261] \"#00000080\" \"#03030380\" \"#05050580\" \"#08080880\" \"#0A0A0A80\" #> [266] \"#0D0D0D80\" \"#0F0F0F80\" \"#12121280\" \"#14141480\" \"#17171780\" #> [271] \"#1A1A1A80\" \"#1C1C1C80\" \"#1F1F1F80\" \"#21212180\" \"#24242480\" #> [276] \"#26262680\" \"#29292980\" \"#2B2B2B80\" \"#2E2E2E80\" \"#30303080\" #> [281] \"#33333380\" \"#36363680\" \"#38383880\" \"#3B3B3B80\" \"#3D3D3D80\" #> [286] \"#40404080\" \"#42424280\" \"#45454580\" \"#47474780\" \"#4A4A4A80\" #> [291] \"#4D4D4D80\" \"#4F4F4F80\" \"#52525280\" \"#54545480\" \"#57575780\" #> [296] \"#59595980\" \"#5C5C5C80\" \"#5E5E5E80\" \"#61616180\" \"#63636380\" #> [301] \"#66666680\" \"#69696980\" \"#6B6B6B80\" \"#6E6E6E80\" \"#70707080\" #> [306] \"#73737380\" \"#75757580\" \"#78787880\" \"#7A7A7A80\" \"#7D7D7D80\" #> [311] \"#7F7F7F80\" \"#82828280\" \"#85858580\" \"#87878780\" \"#8A8A8A80\" #> [316] \"#8C8C8C80\" \"#8F8F8F80\" \"#91919180\" \"#94949480\" \"#96969680\" #> [321] \"#99999980\" \"#9C9C9C80\" \"#9E9E9E80\" \"#A1A1A180\" \"#A3A3A380\" #> [326] \"#A6A6A680\" \"#A8A8A880\" \"#ABABAB80\" \"#ADADAD80\" \"#B0B0B080\" #> [331] \"#B3B3B380\" \"#B5B5B580\" \"#B8B8B880\" \"#BABABA80\" \"#BDBDBD80\" #> [336] \"#BFBFBF80\" \"#C2C2C280\" \"#C4C4C480\" \"#C7C7C780\" \"#C9C9C980\" #> [341] \"#CCCCCC80\" \"#CFCFCF80\" \"#D1D1D180\" \"#D4D4D480\" \"#D6D6D680\" #> [346] \"#D9D9D980\" \"#DBDBDB80\" \"#DEDEDE80\" \"#E0E0E080\" \"#E3E3E380\" #> [351] \"#E5E5E580\" \"#E8E8E880\" \"#EBEBEB80\" \"#EDEDED80\" \"#F0F0F080\" #> [356] \"#F2F2F280\" \"#F5F5F580\" \"#F7F7F780\" \"#FAFAFA80\" \"#FCFCFC80\" #> [361] \"#FFFFFF80\" \"#F0FFF080\" \"#F0FFF080\" \"#E0EEE080\" \"#C1CDC180\" #> [366] \"#838B8380\" \"#FF69B480\" \"#FF6EB480\" \"#EE6AA780\" \"#CD609080\" #> [371] \"#8B3A6280\" \"#CD5C5C80\" \"#FF6A6A80\" \"#EE636380\" \"#CD555580\" #> [376] \"#8B3A3A80\" \"#FFFFF080\" \"#FFFFF080\" \"#EEEEE080\" \"#CDCDC180\" #> [381] \"#8B8B8380\" \"#F0E68C80\" \"#FFF68F80\" \"#EEE68580\" \"#CDC67380\" #> [386] \"#8B864E80\" \"#E6E6FA80\" \"#FFF0F580\" \"#FFF0F580\" \"#EEE0E580\" #> [391] \"#CDC1C580\" \"#8B838680\" \"#7CFC0080\" \"#FFFACD80\" \"#FFFACD80\" #> [396] \"#EEE9BF80\" \"#CDC9A580\" \"#8B897080\" \"#ADD8E680\" \"#BFEFFF80\" #> [401] \"#B2DFEE80\" \"#9AC0CD80\" \"#68838B80\" \"#F0808080\" \"#E0FFFF80\" #> [406] \"#E0FFFF80\" \"#D1EEEE80\" \"#B4CDCD80\" \"#7A8B8B80\" \"#EEDD8280\" #> [411] \"#FFEC8B80\" \"#EEDC8280\" \"#CDBE7080\" \"#8B814C80\" \"#FAFAD280\" #> [416] \"#D3D3D380\" \"#90EE9080\" \"#D3D3D380\" \"#FFB6C180\" \"#FFAEB980\" #> [421] \"#EEA2AD80\" \"#CD8C9580\" \"#8B5F6580\" \"#FFA07A80\" \"#FFA07A80\" #> [426] \"#EE957280\" \"#CD816280\" \"#8B574280\" \"#20B2AA80\" \"#87CEFA80\" #> [431] \"#B0E2FF80\" \"#A4D3EE80\" \"#8DB6CD80\" \"#607B8B80\" \"#8470FF80\" #> [436] \"#77889980\" \"#77889980\" \"#B0C4DE80\" \"#CAE1FF80\" \"#BCD2EE80\" #> [441] \"#A2B5CD80\" \"#6E7B8B80\" \"#FFFFE080\" \"#FFFFE080\" \"#EEEED180\" #> [446] \"#CDCDB480\" \"#8B8B7A80\" \"#32CD3280\" \"#FAF0E680\" \"#FF00FF80\" #> [451] \"#FF00FF80\" \"#EE00EE80\" \"#CD00CD80\" \"#8B008B80\" \"#B0306080\" #> [456] \"#FF34B380\" \"#EE30A780\" \"#CD299080\" \"#8B1C6280\" \"#66CDAA80\" #> [461] \"#0000CD80\" \"#BA55D380\" \"#E066FF80\" \"#D15FEE80\" \"#B452CD80\" #> [466] \"#7A378B80\" \"#9370DB80\" \"#AB82FF80\" \"#9F79EE80\" \"#8968CD80\" #> [471] \"#5D478B80\" \"#3CB37180\" \"#7B68EE80\" \"#00FA9A80\" \"#48D1CC80\" #> [476] \"#C7158580\" \"#19197080\" \"#F5FFFA80\" \"#FFE4E180\" \"#FFE4E180\" #> [481] \"#EED5D280\" \"#CDB7B580\" \"#8B7D7B80\" \"#FFE4B580\" \"#FFDEAD80\" #> [486] \"#FFDEAD80\" \"#EECFA180\" \"#CDB38B80\" \"#8B795E80\" \"#00008080\" #> [491] \"#00008080\" \"#FDF5E680\" \"#6B8E2380\" \"#C0FF3E80\" \"#B3EE3A80\" #> [496] \"#9ACD3280\" \"#698B2280\" \"#FFA50080\" \"#FFA50080\" \"#EE9A0080\" #> [501] \"#CD850080\" \"#8B5A0080\" \"#FF450080\" \"#FF450080\" \"#EE400080\" #> [506] \"#CD370080\" \"#8B250080\" \"#DA70D680\" \"#FF83FA80\" \"#EE7AE980\" #> [511] \"#CD69C980\" \"#8B478980\" \"#EEE8AA80\" \"#98FB9880\" \"#9AFF9A80\" #> [516] \"#90EE9080\" \"#7CCD7C80\" \"#548B5480\" \"#AFEEEE80\" \"#BBFFFF80\" #> [521] \"#AEEEEE80\" \"#96CDCD80\" \"#668B8B80\" \"#DB709380\" \"#FF82AB80\" #> [526] \"#EE799F80\" \"#CD688980\" \"#8B475D80\" \"#FFEFD580\" \"#FFDAB980\" #> [531] \"#FFDAB980\" \"#EECBAD80\" \"#CDAF9580\" \"#8B776580\" \"#CD853F80\" #> [536] \"#FFC0CB80\" \"#FFB5C580\" \"#EEA9B880\" \"#CD919E80\" \"#8B636C80\" #> [541] \"#DDA0DD80\" \"#FFBBFF80\" \"#EEAEEE80\" \"#CD96CD80\" \"#8B668B80\" #> [546] \"#B0E0E680\" \"#A020F080\" \"#9B30FF80\" \"#912CEE80\" \"#7D26CD80\" #> [551] \"#551A8B80\" \"#FF000080\" \"#FF000080\" \"#EE000080\" \"#CD000080\" #> [556] \"#8B000080\" \"#BC8F8F80\" \"#FFC1C180\" \"#EEB4B480\" \"#CD9B9B80\" #> [561] \"#8B696980\" \"#4169E180\" \"#4876FF80\" \"#436EEE80\" \"#3A5FCD80\" #> [566] \"#27408B80\" \"#8B451380\" \"#FA807280\" \"#FF8C6980\" \"#EE826280\" #> [571] \"#CD705480\" \"#8B4C3980\" \"#F4A46080\" \"#2E8B5780\" \"#54FF9F80\" #> [576] \"#4EEE9480\" \"#43CD8080\" \"#2E8B5780\" \"#FFF5EE80\" \"#FFF5EE80\" #> [581] \"#EEE5DE80\" \"#CDC5BF80\" \"#8B868280\" \"#A0522D80\" \"#FF824780\" #> [586] \"#EE794280\" \"#CD683980\" \"#8B472680\" \"#87CEEB80\" \"#87CEFF80\" #> [591] \"#7EC0EE80\" \"#6CA6CD80\" \"#4A708B80\" \"#6A5ACD80\" \"#836FFF80\" #> [596] \"#7A67EE80\" \"#6959CD80\" \"#473C8B80\" \"#70809080\" \"#C6E2FF80\" #> [601] \"#B9D3EE80\" \"#9FB6CD80\" \"#6C7B8B80\" \"#70809080\" \"#FFFAFA80\" #> [606] \"#FFFAFA80\" \"#EEE9E980\" \"#CDC9C980\" \"#8B898980\" \"#00FF7F80\" #> [611] \"#00FF7F80\" \"#00EE7680\" \"#00CD6680\" \"#008B4580\" \"#4682B480\" #> [616] \"#63B8FF80\" \"#5CACEE80\" \"#4F94CD80\" \"#36648B80\" \"#D2B48C80\" #> [621] \"#FFA54F80\" \"#EE9A4980\" \"#CD853F80\" \"#8B5A2B80\" \"#D8BFD880\" #> [626] \"#FFE1FF80\" \"#EED2EE80\" \"#CDB5CD80\" \"#8B7B8B80\" \"#FF634780\" #> [631] \"#FF634780\" \"#EE5C4280\" \"#CD4F3980\" \"#8B362680\" \"#40E0D080\" #> [636] \"#00F5FF80\" \"#00E5EE80\" \"#00C5CD80\" \"#00868B80\" \"#EE82EE80\" #> [641] \"#D0209080\" \"#FF3E9680\" \"#EE3A8C80\" \"#CD327880\" \"#8B225280\" #> [646] \"#F5DEB380\" \"#FFE7BA80\" \"#EED8AE80\" \"#CDBA9680\" \"#8B7E6680\" #> [651] \"#F5F5F580\" \"#FFFF0080\" \"#FFFF0080\" \"#EEEE0080\" \"#CDCD0080\" #> [656] \"#8B8B0080\" \"#9ACD3280\" alpha(\"red\", seq(0, 1, length.out = 10)) #> [1] \"#FF000000\" \"#FF00001C\" \"#FF000039\" \"#FF000055\" \"#FF000071\" #> [6] \"#FF00008E\" \"#FF0000AA\" \"#FF0000C6\" \"#FF0000E3\" \"#FF0000\" alpha(c(\"first\" = \"gold\", \"second\" = \"lightgray\", \"third\" = \"#cd7f32\"), .5) #> first second third #> \"#FFD70080\" \"#D3D3D380\" \"#CD7F3280\""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":null,"dir":"Reference","previous_headings":"","what":"Automatic breaks for numeric axes — breaks_extended","title":"Automatic breaks for numeric axes — breaks_extended","text":"Uses Wilkinson's extended breaks algorithm implemented labeling package.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Automatic breaks for numeric axes — breaks_extended","text":"","code":"breaks_extended(n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Automatic breaks for numeric axes — breaks_extended","text":"n Desired number breaks. may get slightly fewer breaks requested. ... arguments passed labeling::extended()","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Automatic breaks for numeric axes — breaks_extended","text":"Talbot, J., Lin, S., Hanrahan, P. (2010) Extension Wilkinson's Algorithm Positioning Tick Labels Axes, InfoVis 2010 http://vis.stanford.edu/files/2010-TickLabels-InfoVis.pdf.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Automatic breaks for numeric axes — breaks_extended","text":"","code":"demo_continuous(c(0, 10)) #> scale_x_continuous() demo_continuous(c(0, 10), breaks = breaks_extended(3)) #> scale_x_continuous(breaks = breaks_extended(3)) demo_continuous(c(0, 10), breaks = breaks_extended(10)) #> scale_x_continuous(breaks = breaks_extended(10))"},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":null,"dir":"Reference","previous_headings":"","what":"Breaks for log axes — breaks_log","title":"Breaks for log axes — breaks_log","text":"algorithm starts looking integer powers base. provide enough breaks, looks additional intermediate breaks integer multiples integer powers base. fails (can small ranges), fall back extended_breaks()","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Breaks for log axes — breaks_log","text":"","code":"breaks_log(n = 5, base = 10)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Breaks for log axes — breaks_log","text":"n desired number breaks base base logarithm use","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Breaks for log axes — breaks_log","text":"algorithm starts looking set integer powers base cover range data. generate least n - 2 breaks, look integer 1 base splits interval approximately half. example, case base = 10, integer 3 log10(3) = 0.477. leaves 2 intervals: c(1, 3) c(3, 10). still need breaks, look another integer splits largest remaining interval (log-scale) approximately half. base = 10, 5 log10(5) = 0.699. generic algorithm starts set integers steps containing 1 set candidate integers containing integers larger 1 smaller base. remaining candidate integer x, smallest interval (log-scale) vector sort(c(x, steps, base)) calculated. candidate x yields largest minimal interval added steps removed candidate set. repeated either sufficient number breaks, >= n-2, returned candidates used.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Breaks for log axes — breaks_log","text":"","code":"demo_log10(c(1, 1e5)) #> scale_x_log10() demo_log10(c(1, 1e6)) #> scale_x_log10() # Request more breaks by setting n demo_log10(c(1, 1e6), breaks = breaks_log(6)) #> scale_x_log10(breaks = breaks_log(6)) # Some tricky ranges demo_log10(c(2000, 9000)) #> scale_x_log10() demo_log10(c(2000, 14000)) #> scale_x_log10() demo_log10(c(2000, 85000), expand = c(0, 0)) #> scale_x_log10(expand = c(0, 0)) # An even smaller range that requires falling back to linear breaks demo_log10(c(1800, 2000)) #> scale_x_log10()"},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":null,"dir":"Reference","previous_headings":"","what":"Pretty breaks for date/times — breaks_pretty","title":"Pretty breaks for date/times — breaks_pretty","text":"Uses default R break algorithm implemented pretty(). primarily useful date/times, extended_breaks() slightly better job numeric scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pretty breaks for date/times — breaks_pretty","text":"","code":"breaks_pretty(n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pretty breaks for date/times — breaks_pretty","text":"n Desired number breaks. may get slightly fewer breaks requested. ... arguments passed pretty()","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pretty breaks for date/times — breaks_pretty","text":"","code":"one_month <- as.POSIXct(c(\"2020-05-01\", \"2020-06-01\")) demo_datetime(one_month) #> scale_x_datetime() demo_datetime(one_month, breaks = breaks_pretty(2)) #> scale_x_datetime(breaks = breaks_pretty(2)) demo_datetime(one_month, breaks = breaks_pretty(4)) #> scale_x_datetime(breaks = breaks_pretty(4)) # Tightly spaced date breaks often need custom labels too demo_datetime(one_month, breaks = breaks_pretty(12)) #> scale_x_datetime(breaks = breaks_pretty(12)) demo_datetime(one_month, breaks = breaks_pretty(12), labels = label_date_short() ) #> scale_x_datetime(breaks = breaks_pretty(12), labels = label_date_short())"},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":null,"dir":"Reference","previous_headings":"","what":"Breaks for timespan data — breaks_timespan","title":"Breaks for timespan data — breaks_timespan","text":"timespan units span variety bases (1000 seconds, 60 second minutes, 24 hours, 7 days), range input data determines base used calculating breaks","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Breaks for timespan data — breaks_timespan","text":"","code":"breaks_timespan(unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\"), n = 5)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Breaks for timespan data — breaks_timespan","text":"unit unit used interpret numeric data input n Desired number breaks. may get slightly fewer breaks requested.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Breaks for timespan data — breaks_timespan","text":"","code":"demo_timespan(seq(0, 100), breaks = breaks_timespan()) #> scale_x_continuous(breaks = breaks_timespan())"},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":null,"dir":"Reference","previous_headings":"","what":"Equally spaced breaks — breaks_width","title":"Equally spaced breaks — breaks_width","text":"Useful numeric, date, date-time scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Equally spaced breaks — breaks_width","text":"","code":"breaks_width(width, offset = 0)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Equally spaced breaks — breaks_width","text":"width Distance break. Either number, date/times, single string form \"{n} {unit}\", e.g. \"1 month\", \"5 days\". Unit can one \"sec\", \"min\", \"hour\", \"day\", \"week\", \"month\", \"year\". offset Use want breaks start zero, conventional date time boundary 1st January midnight. Either number, date/times, single string form \"{n} {unit}\", width. offset can vector, accumulate order given. mostly useful dates, e.g. c(\"3 months\", \"5 days\") offset three months five days, useful UK tax year. Note due way dates rounded, guarantee offset = c(x, y) give result offset = c(y, x).","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Equally spaced breaks — breaks_width","text":"","code":"demo_continuous(c(0, 100)) #> scale_x_continuous() demo_continuous(c(0, 100), breaks = breaks_width(10)) #> scale_x_continuous(breaks = breaks_width(10)) demo_continuous(c(0, 100), breaks = breaks_width(20, -4)) #> scale_x_continuous(breaks = breaks_width(20, -4)) demo_continuous(c(0, 100), breaks = breaks_width(20, 4)) #> scale_x_continuous(breaks = breaks_width(20, 4)) # This is also useful for dates one_month <- as.POSIXct(c(\"2020-05-01\", \"2020-06-01\")) demo_datetime(one_month) #> scale_x_datetime() demo_datetime(one_month, breaks = breaks_width(\"1 week\")) #> scale_x_datetime(breaks = breaks_width(\"1 week\")) demo_datetime(one_month, breaks = breaks_width(\"5 days\")) #> scale_x_datetime(breaks = breaks_width(\"5 days\")) # This is so useful that scale_x_datetime() has a shorthand: demo_datetime(one_month, date_breaks = \"5 days\") #> scale_x_datetime(date_breaks = \"5 days\") # hms times also work one_hour <- hms::hms(hours = 0:1) demo_time(one_hour) #> scale_x_time() demo_time(one_hour, breaks = breaks_width(\"15 min\")) #> scale_x_time(breaks = breaks_width(\"15 min\")) demo_time(one_hour, breaks = breaks_width(\"600 sec\")) #> scale_x_time(breaks = breaks_width(\"600 sec\")) # Offets are useful for years that begin on dates other than the 1st of # January, such as the UK financial year, which begins on the 1st of April. three_years <- as.POSIXct(c(\"2020-01-01\", \"2021-01-01\", \"2022-01-01\")) demo_datetime( three_years, breaks = breaks_width(\"1 year\", offset = \"3 months\") ) #> scale_x_datetime(breaks = breaks_width(\"1 year\", offset = \"3 months\")) # The offset can be a vector, to create offsets that have compound units, # such as the UK fiscal (tax) year, which begins on the 6th of April. demo_datetime( three_years, breaks = breaks_width(\"1 year\", offset = c(\"3 months\", \"5 days\")) ) #> scale_x_datetime(breaks = breaks_width(\"1 year\", offset = c(\"3 months\", #> \"5 days\")))"},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute breaks for continuous scale — cbreaks","title":"Compute breaks for continuous scale — cbreaks","text":"function wraps components needed go continuous range set breaks labels suitable display axes legends.","code":""},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute breaks for continuous scale — cbreaks","text":"","code":"cbreaks(range, breaks = extended_breaks(), labels = scientific_format())"},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute breaks for continuous scale — cbreaks","text":"range numeric vector length 2 giving range underlying data breaks either vector break values, break function make vector breaks given range data labels either vector labels (character vector list expression) format function make vector labels called vector breaks. Labels can specified manually breaks - extremely dangerous supply labels know breaks .","code":""},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compute breaks for continuous scale — cbreaks","text":"","code":"cbreaks(c(0, 100)) #> $breaks #> [1] 0 25 50 75 100 #> #> $labels #> [1] \"0.0e+00\" \"2.5e+01\" \"5.0e+01\" \"7.5e+01\" \"1.0e+02\" #> cbreaks(c(0, 100), breaks_pretty(3)) #> $breaks #> [1] 0 50 100 #> #> $labels #> [1] \"0e+00\" \"5e+01\" \"1e+02\" #> cbreaks(c(0, 100), breaks_pretty(10)) #> $breaks #> [1] 0 10 20 30 40 50 60 70 80 90 100 #> #> $labels #> [1] \"0e+00\" \"1e+01\" \"2e+01\" \"3e+01\" \"4e+01\" \"5e+01\" \"6e+01\" \"7e+01\" #> [9] \"8e+01\" \"9e+01\" \"1e+02\" #> cbreaks(c(1, 100), log_breaks()) #> $breaks #> [1] 1 10 100 #> #> $labels #> [1] \"1e+00\" \"1e+01\" \"1e+02\" #> cbreaks(c(1, 1e4), log_breaks()) #> $breaks #> [1] 1 10 100 1000 10000 #> #> $labels #> [1] \"1e+00\" \"1e+01\" \"1e+02\" \"1e+03\" \"1e+04\" #> cbreaks(c(0, 100), labels = math_format()) #> $breaks #> [1] 0 25 50 75 100 #> #> $labels #> expression(10^0, 10^25, 10^50, 10^75, 10^100) #> cbreaks(c(0, 1), labels = percent_format()) #> $breaks #> [1] 0.00 0.25 0.50 0.75 1.00 #> #> $labels #> [1] \"0%\" \"25%\" \"50%\" \"75%\" \"100%\" #> cbreaks(c(0, 1e6), labels = comma_format()) #> $breaks #> [1] 0 250000 500000 750000 1000000 #> #> $labels #> [1] \"0\" \"250,000\" \"500,000\" \"750,000\" \"1,000,000\" #> cbreaks(c(0, 1e6), labels = dollar_format()) #> $breaks #> [1] 0 250000 500000 750000 1000000 #> #> $labels #> [1] \"$0\" \"$250,000\" \"$500,000\" \"$750,000\" \"$1,000,000\" #> cbreaks(c(0, 30), labels = dollar_format()) #> $breaks #> [1] 0 10 20 30 #> #> $labels #> [1] \"$0\" \"$10\" \"$20\" \"$30\" #> # You can also specify them manually: cbreaks(c(0, 100), breaks = c(15, 20, 80)) #> $breaks #> [1] 15 20 80 #> #> $labels #> [1] \"1.5e+01\" \"2.0e+01\" \"8.0e+01\" #> cbreaks(c(0, 100), breaks = c(15, 20, 80), labels = c(1.5, 2.0, 8.0)) #> $breaks #> [1] 15 20 80 #> #> $labels #> [1] \"1.5\" \"2\" \"8\" #> cbreaks(c(0, 100), breaks = c(15, 20, 80), labels = expression(alpha, beta, gamma) ) #> $breaks #> [1] 15 20 80 #> #> $labels #> $labels[[1]] #> alpha #> #> $labels[[2]] #> beta #> #> $labels[[3]] #> gamma #> #>"},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":null,"dir":"Reference","previous_headings":"","what":"Modify standard R colour in hcl colour space. — col2hcl","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"Transforms rgb hcl, sets non-missing arguments backtransforms rgb.","code":""},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"","code":"col2hcl(colour, h = NULL, c = NULL, l = NULL, alpha = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"colour character vector colours modified h Hue, [0, 360] c Chroma, [0, 100] l Luminance, [0, 100] alpha Alpha, [0, 1].","code":""},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"","code":"reds <- rep(\"red\", 6) show_col(col2hcl(reds, h = seq(0, 180, length = 6))) show_col(col2hcl(reds, c = seq(0, 80, length = 6))) show_col(col2hcl(reds, l = seq(0, 100, length = 6))) show_col(col2hcl(reds, alpha = seq(0, 1, length = 6)))"},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":null,"dir":"Reference","previous_headings":"","what":"Colour mapping — col_numeric","title":"Colour mapping — col_numeric","text":"Conveniently maps data values (numeric factor/character) colours according given palette, can provided variety formats.","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Colour mapping — col_numeric","text":"","code":"col_numeric( palette, domain, na.color = \"#808080\", alpha = FALSE, reverse = FALSE ) col_bin( palette, domain, bins = 7, pretty = TRUE, na.color = \"#808080\", alpha = FALSE, reverse = FALSE, right = FALSE ) col_quantile( palette, domain, n = 4, probs = seq(0, 1, length.out = n + 1), na.color = \"#808080\", alpha = FALSE, reverse = FALSE, right = FALSE ) col_factor( palette, domain, levels = NULL, ordered = FALSE, na.color = \"#808080\", alpha = FALSE, reverse = FALSE )"},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Colour mapping — col_numeric","text":"palette colours colour function values mapped domain possible values can mapped. col_numeric col_bin, can simple numeric range (e.g. c(0, 100)); col_quantile needs representative numeric data; col_factor needs categorical data. NULL, whenever resulting colour function called, x value represent domain. implies function invoked multiple times, encoding values colours may consistent; consistency needed, must provide non-NULL domain. na.color colour return NA values. Note na.color = NA valid. alpha Whether alpha channels respected ignored. TRUE colors without explicit alpha information treated fully opaque. reverse Whether colors (color function) palette used reverse order. example, default order palette goes blue green, reverse = TRUE result colors going green blue. bins Either numeric vector two unique cut points single number (greater equal 2) giving number intervals domain values cut. pretty Whether use function pretty() generate bins argument bins single number. pretty = TRUE, actual number bins may number bins specified. pretty = FALSE, seq() used generate bins breaks may \"pretty\". right parameter supplied base::cut(). See Details n Number equal-size quantiles desired. precise control, use probs argument instead. probs See stats::quantile(). provided, n argument ignored. levels alternate way specifying levels; specified, domain ignored ordered TRUE domain needs coerced factor, treat already correct order","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Colour mapping — col_numeric","text":"function takes single parameter x; called vector numbers (except col_factor, expects factors/characters), #RRGGBB colour strings returned (unless alpha = TRUE case #RRGGBBAA may also possible).","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Colour mapping — col_numeric","text":"col_numeric simple linear mapping continuous numeric data interpolated palette. col_bin also maps continuous numeric data, performs binning based value (see base::cut() function). col_bin defaults cut function include.lowest = TRUE right = FALSE. col_quantile similarly bins numeric data, via stats::quantile() function. col_factor maps factors colours. palette discrete different number colours number factors, interpolation used. palette argument can following: character vector RGB named colours. Examples: palette(), c(\"#000000\", \"#0000FF\", \"#FFFFFF\"), topo.colors(10) name RColorBrewer palette, e.g. \"BuPu\" \"Greens\". full name viridis palette: \"viridis\", \"magma\", \"inferno\", \"plasma\". function receives single value 0 1 returns colour. Examples: colorRamp(c(\"#000000\", \"#FFFFFF\"), interpolate=\"spline\").","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Colour mapping — col_numeric","text":"","code":"pal <- col_bin(\"Greens\", domain = 0:100) show_col(pal(sort(runif(10, 60, 100)))) # Exponential distribution, mapped continuously show_col(col_numeric(\"Blues\", domain = NULL)(sort(rexp(16)))) # Exponential distribution, mapped by interval show_col(col_bin(\"Blues\", domain = NULL, bins = 4)(sort(rexp(16)))) # Exponential distribution, mapped by quantile show_col(col_quantile(\"Blues\", domain = NULL)(sort(rexp(16)))) # Categorical data; by default, the values being coloured span the gamut... show_col(col_factor(\"RdYlBu\", domain = NULL)(LETTERS[1:5])) # ...unless the data is a factor, without droplevels... show_col(col_factor(\"RdYlBu\", domain = NULL)(factor(LETTERS[1:5], levels = LETTERS))) #> Warning: n too large, allowed maximum for palette RdYlBu is 11 #> Returning the palette you asked for with that many colors # ...or the domain is stated explicitly. show_col(col_factor(\"RdYlBu\", levels = LETTERS)(LETTERS[1:5])) #> Warning: n too large, allowed maximum for palette RdYlBu is 11 #> Returning the palette you asked for with that many colors"},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":null,"dir":"Reference","previous_headings":"","what":"Fast colour interpolation — colour_ramp","title":"Fast colour interpolation — colour_ramp","text":"Returns function maps interval [0,1] set colours. Interpolation performed CIELAB colour space. Similar colorRamp(space = 'Lab'), hundreds times faster, provides results \"#RRGGBB\" (\"#RRGGBBAA\") character form instead RGB colour matrices.","code":""},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fast colour interpolation — colour_ramp","text":"","code":"colour_ramp(colors, na.color = NA, alpha = TRUE)"},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fast colour interpolation — colour_ramp","text":"colors Colours interpolate; must valid argument grDevices::col2rgb(). can character vector \"#RRGGBB\" \"#RRGGBBAA\", colour names grDevices::colors(), positive integer indexes grDevices::palette(). na.color colour map NA values (example, \"#606060\" dark grey, \"#00000000\" transparent) values outside [0,1]. Can NA, simply cause NA inserted output. alpha Whether include alpha transparency channels interpolation. TRUE alpha information included interpolation. returned colours provided \"#RRGGBBAA\" format needed, .e., cases colour fully opaque, \"AA\" part equal \"FF\". Fully opaque colours returned \"#RRGGBB\" format. FALSE, alpha information discarded interpolation colours always returned \"#RRGGBB\".","code":""},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fast colour interpolation — colour_ramp","text":"function takes numeric vector returns character vector length RGB RGBA hex colours.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Fast colour interpolation — colour_ramp","text":"","code":"ramp <- colour_ramp(c(\"red\", \"green\", \"blue\")) show_col(ramp(seq(0, 1, length = 12)))"},{"path":"https://scales.r-lib.org/dev/reference/comma.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_number()/label_comma() — comma","title":"Superseded interface to label_number()/label_comma() — comma","text":"functions kept backward compatibility; switch label_number()/label_comma() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/comma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_number()/label_comma() — comma","text":"","code":"comma( x, accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, digits, ... ) number_format( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \" \", decimal.mark = \".\", style_positive = c(\"none\", \"plus\", \"space\"), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, trim = TRUE, ... ) comma_format( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, digits, ... )"},{"path":"https://scales.r-lib.org/dev/reference/comma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_number()/label_comma() — comma","text":"x numeric vector format. accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). digits Use accuracy instead. ... arguments passed base::format(). style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label.","code":""},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":null,"dir":"Reference","previous_headings":"","what":"Continuous scale — cscale","title":"Continuous scale — cscale","text":"Continuous scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Continuous scale — cscale","text":"","code":"cscale(x, palette, na.value = NA_real_, trans = transform_identity())"},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Continuous scale — cscale","text":"x vector continuous values scale palette palette use. Built palettes: pal_area, pal_brewer, pal_dichromat, pal_div_gradient, pal_gradient_n, pal_grey, pal_hue, pal_identity, pal_linetype, pal_manual, pal_rescale, pal_seq_gradient, pal_shape, pal_viridis na.value value use missing values trans transformation object describing transform raw data prior scaling. Defaults identity transformation leaves data unchanged. Built transformations: transform_asinh, transform_asn, transform_atanh, transform_boxcox, transform_compose, transform_date, transform_exp, transform_hms, transform_identity, transform_log, transform_log10, transform_log1p, transform_log2, transform_logit, transform_modulus, transform_probability, transform_probit, transform_pseudo_log, transform_reciprocal, transform_reverse, transform_sqrt, transform_time, transform_timespan, transform_yj .","code":""},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Continuous scale — cscale","text":"","code":"with(mtcars, plot(disp, mpg, cex = cscale(hp, pal_rescale()))) with(mtcars, plot(disp, mpg, cex = cscale(hp, pal_rescale(), trans = transform_sqrt() ))) with(mtcars, plot(disp, mpg, cex = cscale(hp, pal_area()))) with(mtcars, plot(disp, mpg, pch = 20, cex = 5, col = cscale(hp, pal_seq_gradient(\"grey80\", \"black\")) ))"},{"path":"https://scales.r-lib.org/dev/reference/date_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Regularly spaced dates — date_breaks","title":"Regularly spaced dates — date_breaks","text":"Use breaks_width() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/date_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Regularly spaced dates — date_breaks","text":"","code":"date_breaks(width = \"1 month\")"},{"path":"https://scales.r-lib.org/dev/reference/date_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Regularly spaced dates — date_breaks","text":"width interval specification, one \"sec\", \"min\", \"hour\", \"day\", \"week\", \"month\", \"year\". Can integer space, followed \"s\". Fractional seconds supported.","code":""},{"path":"https://scales.r-lib.org/dev/reference/date_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_date()/label_time() — date_format","title":"Superseded interface to label_date()/label_time() — date_format","text":"functions kept backward compatibility; switch [label_date()/label_time() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/date_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_date()/label_time() — date_format","text":"","code":"date_format(format = \"%Y-%m-%d\", tz = \"UTC\", locale = NULL) time_format(format = \"%H:%M:%S\", tz = \"UTC\", locale = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/date_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_date()/label_time() — date_format","text":"format date_format() time_format() date/time format string using standard POSIX specification. See strptime() details. date_short() character vector length 4 giving format components use year, month, day, hour respectively. tz time zone name, see timezones(). Defaults UTC locale Locale use day month names. default uses current locale. Setting argument requires stringi, can see complete list supported locales stringi::stri_locale_list().","code":""},{"path":"https://scales.r-lib.org/dev/reference/demo_continuous.html","id":null,"dir":"Reference","previous_headings":"","what":"Demonstrate scales functions with ggplot2 code — demo_continuous","title":"Demonstrate scales functions with ggplot2 code — demo_continuous","text":"functions generate ggplot2 code needed use scales functions real code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/demo_continuous.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Demonstrate scales functions with ggplot2 code — demo_continuous","text":"","code":"demo_continuous(x, ...) demo_log10(x, ...) demo_discrete(x, ...) demo_datetime(x, ...) demo_time(x, ...) demo_timespan(x, ...)"},{"path":"https://scales.r-lib.org/dev/reference/demo_continuous.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Demonstrate scales functions with ggplot2 code — demo_continuous","text":"x vector data","code":""},{"path":"https://scales.r-lib.org/dev/reference/dollar_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_currency() — dollar_format","title":"Superseded interface to label_currency() — dollar_format","text":"functions kept backward compatibility; switch label_currency() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/dollar_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_currency() — dollar_format","text":"","code":"dollar_format( accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_cents = 1e+05, negative_parens = deprecated(), ... ) dollar( x, accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_cents = 1e+05, negative_parens = deprecated(), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, ... ) label_dollar( accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_cents = 1e+05, negative_parens = deprecated(), ... )"},{"path":"https://scales.r-lib.org/dev/reference/dollar_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_currency() — dollar_format","text":"scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). largest_with_cents Like largest_with_fractional() label_currency() negative_parens Use style_negative = \"parens\" instead. ... arguments passed base::format(). x numeric vector","code":""},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":null,"dir":"Reference","previous_headings":"","what":"Discrete scale — dscale","title":"Discrete scale — dscale","text":"Discrete scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Discrete scale — dscale","text":"","code":"dscale(x, palette, na.value = NA)"},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Discrete scale — dscale","text":"x vector discrete values scale palette aesthetic palette use na.value aesthetic use missing values","code":""},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Discrete scale — dscale","text":"","code":"with(mtcars, plot(disp, mpg, pch = 20, cex = 3, col = dscale(factor(cyl), pal_brewer()) ))"},{"path":"https://scales.r-lib.org/dev/reference/expand_range.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand a range with a multiplicative or additive constant — expand_range","title":"Expand a range with a multiplicative or additive constant — expand_range","text":"Expand range multiplicative additive constant","code":""},{"path":"https://scales.r-lib.org/dev/reference/expand_range.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand a range with a multiplicative or additive constant — expand_range","text":"","code":"expand_range(range, mul = 0, add = 0, zero_width = 1)"},{"path":"https://scales.r-lib.org/dev/reference/expand_range.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand a range with a multiplicative or additive constant — expand_range","text":"range range data, numeric vector length 2 mul multiplicative constant add additive constant zero_width distance use range zero width","code":""},{"path":"https://scales.r-lib.org/dev/reference/format_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Label using format() — format_format","title":"Label using format() — format_format","text":"function kept backward compatiblity; either use label_number() label_date() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/format_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label using format() — format_format","text":"","code":"format_format(...)"},{"path":"https://scales.r-lib.org/dev/reference/format_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label using format() — format_format","text":"... Arguments passed format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/fullseq.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate sequence of fixed size intervals covering range. — fullseq","title":"Generate sequence of fixed size intervals covering range. — fullseq","text":"Generate sequence fixed size intervals covering range.","code":""},{"path":"https://scales.r-lib.org/dev/reference/fullseq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate sequence of fixed size intervals covering range. — fullseq","text":"","code":"fullseq(range, size, ...)"},{"path":"https://scales.r-lib.org/dev/reference/fullseq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate sequence of fixed size intervals covering range. — fullseq","text":"range range size interval size ... arguments passed methods","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":null,"dir":"Reference","previous_headings":"","what":"Label bytes (1 kB, 2 MB, etc) — label_bytes","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"Scale bytes human friendly units. Can use either SI units (e.g. kB = 1000 bytes) binary units (e.g. kiB = 1024 bytes). See Units Information Wikipedia details.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"","code":"label_bytes(units = \"auto_si\", accuracy = 1, scale = 1, ...)"},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"units Unit use. either one : \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\" SI units (base 1000). \"kiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\" binary units (base 1024). auto_si auto_binary automatically pick appropriate unit value. accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. ... Arguments passed number prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"labeller function takes numeric vector breaks returns character vector labels.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"","code":"demo_continuous(c(1, 1e6)) #> scale_x_continuous() demo_continuous(c(1, 1e6), labels = label_bytes()) #> scale_x_continuous(labels = label_bytes()) # Auto units are particularly nice on log scales demo_log10(c(1, 1e7), labels = label_bytes()) #> scale_x_log10(labels = label_bytes()) # You can also set the units demo_continuous(c(1, 1e6), labels = label_bytes(\"kB\")) #> scale_x_continuous(labels = label_bytes(\"kB\")) # You can also use binary units where a megabyte is defined as # (1024) ^ 2 bytes rather than (1000) ^ 2. You'll need to override # the default breaks to make this more informative. demo_continuous(c(1, 1024^2), breaks = breaks_width(250 * 1024), labels = label_bytes(\"auto_binary\") ) #> scale_x_continuous(breaks = breaks_width(250 * 1024), labels = label_bytes(\"auto_binary\"))"},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":null,"dir":"Reference","previous_headings":"","what":"Label currencies ($100, €2.50, etc) — label_currency","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"Format numbers currency, rounding values monetary fractional monetary using unit convenient heuristic.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"","code":"label_currency( accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_fractional = 1e+05, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"accuracy, largest_with_fractional Number round . NULL, default, values rounded nearest integer, unless values non-zero fractional component (e.g. cents) largest value less largest_with_fractional default 100,000. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... Arguments passed number style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"","code":"demo_continuous(c(0, 1), labels = label_currency()) #> scale_x_continuous(labels = label_currency()) demo_continuous(c(1, 100), labels = label_currency()) #> scale_x_continuous(labels = label_currency()) # Customise currency display with prefix and suffix demo_continuous(c(1, 100), labels = label_currency(prefix = \"USD \")) #> scale_x_continuous(labels = label_currency(prefix = \"USD \")) yen <- label_currency( prefix = \"¥\", suffix = \"\", big.mark = \".\", decimal.mark = \",\" ) demo_continuous(c(1000, 1100), labels = yen) #> scale_x_continuous(labels = yen) # Use style_negative = \"parens\" for finance style display demo_continuous(c(-100, 100), labels = label_currency(style_negative = \"parens\")) #> scale_x_continuous(labels = label_currency(style_negative = \"parens\")) # Use scale_cut to use K/M/B where appropriate demo_log10(c(1, 1e16), breaks = log_breaks(7, 1e3), labels = label_currency(scale_cut = cut_short_scale()) ) #> scale_x_log10(breaks = log_breaks(7, 1000), labels = label_currency(scale_cut = cut_short_scale())) # cut_short_scale() uses B = one thousand million # cut_long_scale() uses B = one million million demo_log10(c(1, 1e16), breaks = log_breaks(7, 1e3), labels = label_currency(scale_cut = cut_long_scale()) ) #> scale_x_log10(breaks = log_breaks(7, 1000), labels = label_currency(scale_cut = cut_long_scale())) # You can also define your own breaks gbp <- label_currency( prefix = \"\\u00a3\", scale_cut = c(0, k = 1e3, m = 1e6, bn = 1e9, tn = 1e12) ) demo_log10(c(1, 1e12), breaks = log_breaks(5, 1e3), labels = gbp) #> scale_x_log10(breaks = log_breaks(5, 1000), labels = gbp)"},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":null,"dir":"Reference","previous_headings":"","what":"Label date/times — label_date","title":"Label date/times — label_date","text":"label_date() label_time() label date/times using date/time format strings. label_date_short() automatically constructs short format string sufficient uniquely identify labels. inspired matplotlib's ConciseDateFormatter, uses slightly different approach: ConciseDateFormatter formats \"firsts\" (e.g. first day month, first day day) specially; date_short() formats changes (e.g. new month, new year) specially. label_timespan() intended show time passed adds common time units suffix input (ns, μs, ms, s, m, h, d, w).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label date/times — label_date","text":"","code":"label_date(format = \"%Y-%m-%d\", tz = \"UTC\", locale = NULL) label_date_short(format = c(\"%Y\", \"%b\", \"%d\", \"%H:%M\"), sep = \"\\n\") label_time(format = \"%H:%M:%S\", tz = \"UTC\", locale = NULL) label_timespan( unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\"), space = FALSE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label date/times — label_date","text":"format date_format() time_format() date/time format string using standard POSIX specification. See strptime() details. date_short() character vector length 4 giving format components use year, month, day, hour respectively. tz time zone name, see timezones(). Defaults UTC locale Locale use day month names. default uses current locale. Setting argument requires stringi, can see complete list supported locales stringi::stri_locale_list(). sep Separator use combining date formats single string. unit unit used interpret numeric input space Add space time unit? ... Arguments passed number accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). trim Logical, FALSE, values right-justified common width (see base::format()).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label date/times — label_date","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label date/times — label_date","text":"","code":"date_range <- function(start, days) { start <- as.POSIXct(start) c(start, start + days * 24 * 60 * 60) } two_months <- date_range(\"2020-05-01\", 60) demo_datetime(two_months) #> scale_x_datetime() demo_datetime(two_months, labels = date_format(\"%m/%d\")) #> scale_x_datetime(labels = date_format(\"%m/%d\")) demo_datetime(two_months, labels = date_format(\"%e %b\", locale = \"fr\")) #> scale_x_datetime(labels = date_format(\"%e %b\", locale = \"fr\")) demo_datetime(two_months, labels = date_format(\"%e %B\", locale = \"es\")) #> scale_x_datetime(labels = date_format(\"%e %B\", locale = \"es\")) # ggplot2 provides a short-hand: demo_datetime(two_months, date_labels = \"%m/%d\") #> scale_x_datetime(date_labels = \"%m/%d\") # An alternative labelling system is label_date_short() demo_datetime(two_months, date_breaks = \"7 days\", labels = label_date_short()) #> scale_x_datetime(date_breaks = \"7 days\", labels = label_date_short()) # This is particularly effective for dense labels one_year <- date_range(\"2020-05-01\", 365) demo_datetime(one_year, date_breaks = \"month\") #> scale_x_datetime(date_breaks = \"month\") demo_datetime(one_year, date_breaks = \"month\", labels = label_date_short()) #> scale_x_datetime(date_breaks = \"month\", labels = label_date_short())"},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers in log format (10^3, 10^6, etc) — label_log","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"label_log() displays numbers base^exponent, using superscript formatting.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"","code":"label_log(base = 10, digits = 3)"},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"base Base logarithm use digits Number significant digits show exponent. Argument passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"","code":"demo_log10(c(1, 1e5), labels = label_log()) #> scale_x_log10(labels = label_log()) demo_log10(c(1, 1e5), breaks = breaks_log(base = 2), labels = label_log(base = 2)) #> scale_x_log10(breaks = breaks_log(base = 2), labels = label_log(base = 2))"},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"Use label_number() force decimal display numbers (.e. use scientific notation). label_comma() special case inserts comma every three digits.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"","code":"label_number( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \" \", decimal.mark = \".\", style_positive = c(\"none\", \"plus\", \"space\"), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, trim = TRUE, ... ) label_comma( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, digits, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format(). digits Use accuracy instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"","code":"demo_continuous(c(-1e6, 1e6)) #> scale_x_continuous() demo_continuous(c(-1e6, 1e6), labels = label_number()) #> scale_x_continuous(labels = label_number()) demo_continuous(c(-1e6, 1e6), labels = label_comma()) #> scale_x_continuous(labels = label_comma()) # Use scale to rescale very small or large numbers to generate # more readable labels demo_continuous(c(0, 1e6), labels = label_number()) #> scale_x_continuous(labels = label_number()) demo_continuous(c(0, 1e6), labels = label_number(scale = 1 / 1e3)) #> scale_x_continuous(labels = label_number(scale = 1/1000)) demo_continuous(c(0, 1e-6), labels = label_number()) #> scale_x_continuous(labels = label_number()) demo_continuous(c(0, 1e-6), labels = label_number(scale = 1e6)) #> scale_x_continuous(labels = label_number(scale = 1e+06)) #' Use scale_cut to automatically add prefixes for large/small numbers demo_log10( c(1, 1e9), breaks = log_breaks(10), labels = label_number(scale_cut = cut_short_scale()) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_short_scale())) demo_log10( c(1, 1e9), breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"m\")) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"m\"))) demo_log10( c(1e-9, 1), breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\")) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\"))) # use scale and scale_cut when data already uses SI prefix # for example, if data was stored in kg demo_log10( c(1e-9, 1), breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\"), scale = 1e3) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\"), #> scale = 1000)) #' # Use style arguments to vary the appearance of positive and negative numbers demo_continuous(c(-1e3, 1e3), labels = label_number( style_positive = \"plus\", style_negative = \"minus\" )) #> scale_x_continuous(labels = label_number(style_positive = \"plus\", #> style_negative = \"minus\")) demo_continuous(c(-1e3, 1e3), labels = label_number(style_negative = \"parens\")) #> scale_x_continuous(labels = label_number(style_negative = \"parens\")) # You can use prefix and suffix for other types of display demo_continuous(c(32, 212), labels = label_number(suffix = \"\\u00b0F\")) #> scale_x_continuous(labels = label_number(suffix = \"°F\")) demo_continuous(c(0, 100), labels = label_number(suffix = \"\\u00b0C\")) #> scale_x_continuous(labels = label_number(suffix = \"°C\"))"},{"path":"https://scales.r-lib.org/dev/reference/label_number_auto.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers, avoiding scientific notation where possible — label_number_auto","title":"Label numbers, avoiding scientific notation where possible — label_number_auto","text":"Switches number_format() scientific_format() based set heuristics designed automatically generate useful labels across wide range inputs","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number_auto.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers, avoiding scientific notation where possible — label_number_auto","text":"","code":"label_number_auto()"},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_number_auto.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers, avoiding scientific notation where possible — label_number_auto","text":"","code":"# Very small and very large numbers get scientific notation demo_continuous(c(0, 1e-6), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1e9), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) # Other ranges get the numbers printed in full demo_continuous(c(0, 1e-3), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1e3), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1e6), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) # Transformation is applied individually so you get as little # scientific notation as possible demo_log10(c(1, 1e7), labels = label_number_auto()) #> scale_x_log10(labels = label_number_auto())"},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"label_number_si() deprecated previous unit actually use SI units, instead used called \"short scale\". can now get results label_number(scale_cut = cut_short_scale()), want correct SI units, label_number(scale_cut = cut_si(\"unit\")).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"","code":"label_number_si(unit = \"\", accuracy = NULL, scale = 1, suffix = \"\", ...)"},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"unit Unit measurement (e.g. \"m\" meter, SI unit length). accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data already using SI prefix. suffix Additional text display number. ... Arguments passed label_number prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":null,"dir":"Reference","previous_headings":"","what":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"Round values integers display ordinal values (e.g. 1st, 2nd, 3rd). Built-rules provided English, French, Spanish.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"","code":"label_ordinal( prefix = \"\", suffix = \"\", big.mark = \" \", rules = ordinal_english(), ... ) ordinal_english() ordinal_french(gender = c(\"masculin\", \"feminin\"), plural = FALSE) ordinal_spanish()"},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. rules Named list regular expressions, matched order. Name gives suffix, value specifies numbers match. ... Arguments passed number accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()). gender Masculin feminin gender French ordinal. plural Plural singular French ordinal.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"","code":"demo_continuous(c(1, 5)) #> scale_x_continuous() demo_continuous(c(1, 5), labels = label_ordinal()) #> scale_x_continuous(labels = label_ordinal()) demo_continuous(c(1, 5), labels = label_ordinal(rules = ordinal_french())) #> scale_x_continuous(labels = label_ordinal(rules = ordinal_french())) # The rules are just a set of regular expressions that are applied in turn ordinal_french() #> $er #> [1] \"^1$\" #> #> $e #> [1] \".\" #> ordinal_english() #> $st #> [1] \"(? #> $nd #> [1] \"(? #> $rd #> [1] \"(? #> $th #> [1] \"(?<=1)[123]$\" #> #> $th #> [1] \"[0456789]$\" #> #> $th #> [1] \".\" #> # Note that ordinal rounds values, so you may need to adjust the breaks too demo_continuous(c(1, 10)) #> scale_x_continuous() demo_continuous(c(1, 10), labels = label_ordinal()) #> scale_x_continuous(labels = label_ordinal()) demo_continuous(c(1, 10), labels = label_ordinal(), breaks = breaks_width(2) ) #> scale_x_continuous(labels = label_ordinal(), breaks = breaks_width(2))"},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":null,"dir":"Reference","previous_headings":"","what":"Label with mathematical annotations — label_parse","title":"Label with mathematical annotations — label_parse","text":"label_parse() produces expression strings parsing ; label_math() constructs expressions replacing pronoun .x string.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label with mathematical annotations — label_parse","text":"","code":"label_parse() label_math(expr = 10^.x, format = force)"},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label with mathematical annotations — label_parse","text":"expr expression use format another format function apply prior mathematical transformation - makes easier use floating point numbers mathematical expressions.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label with mathematical annotations — label_parse","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label with mathematical annotations — label_parse","text":"","code":"# Use label_parse() with discrete scales greek <- c(\"alpha\", \"beta\", \"gamma\") demo_discrete(greek) #> scale_x_discrete() demo_discrete(greek, labels = label_parse()) #> scale_x_discrete(labels = label_parse()) # Use label_math() with continuous scales demo_continuous(c(1, 5)) #> scale_x_continuous() demo_continuous(c(1, 5), labels = label_math(alpha[.x])) #> scale_x_continuous(labels = label_math(alpha[.x])) demo_continuous(c(1, 5), labels = label_math()) #> scale_x_continuous(labels = label_math())"},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":null,"dir":"Reference","previous_headings":"","what":"Label percentages (2.5%, 50%, etc) — label_percent","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"Label percentages (2.5%, 50%, etc)","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"","code":"label_percent( accuracy = NULL, scale = 100, prefix = \"\", suffix = \"%\", big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... Arguments passed label_number style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"","code":"demo_continuous(c(0, 1)) #> scale_x_continuous() demo_continuous(c(0, 1), labels = label_percent()) #> scale_x_continuous(labels = label_percent()) # Use prefix and suffix to create your own variants french_percent <- label_percent( decimal.mark = \",\", suffix = \" %\" ) demo_continuous(c(0, .01), labels = french_percent) #> scale_x_continuous(labels = french_percent)"},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":null,"dir":"Reference","previous_headings":"","what":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"Formatter p-values, using \"<\" \">\" p-values close 0 1.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"","code":"label_pvalue( accuracy = 0.001, decimal.mark = \".\", prefix = NULL, add_p = FALSE )"},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. decimal.mark character used indicate numeric decimal point. prefix character vector length 3 giving prefixes put front numbers. default values c(\"<\", \"\", \">\") add_p TRUE c(\"p<\", \"p=\", \"p>\") FALSE. add_p Add \"p=\" value?","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"","code":"demo_continuous(c(0, 1)) #> scale_x_continuous() demo_continuous(c(0, 1), labels = label_pvalue()) #> scale_x_continuous(labels = label_pvalue()) demo_continuous(c(0, 1), labels = label_pvalue(accuracy = 0.1)) #> scale_x_continuous(labels = label_pvalue(accuracy = 0.1)) demo_continuous(c(0, 1), labels = label_pvalue(add_p = TRUE)) #> scale_x_continuous(labels = label_pvalue(add_p = TRUE)) # Or provide your own prefixes prefix <- c(\"p < \", \"p = \", \"p > \") demo_continuous(c(0, 1), labels = label_pvalue(prefix = prefix)) #> scale_x_continuous(labels = label_pvalue(prefix = prefix))"},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"Label numbers scientific notation (e.g. 1e05, 1.5e-02)","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"","code":"label_scientific( digits = 3, scale = 1, prefix = \"\", suffix = \"\", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"digits Number digits show exponent. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"","code":"demo_continuous(c(1, 10)) #> scale_x_continuous() demo_continuous(c(1, 10), labels = label_scientific()) #> scale_x_continuous(labels = label_scientific()) demo_continuous(c(1, 10), labels = label_scientific(digits = 3)) #> scale_x_continuous(labels = label_scientific(digits = 3)) demo_log10(c(1, 1e9)) #> scale_x_log10()"},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":null,"dir":"Reference","previous_headings":"","what":"Label strings by wrapping across multiple lines — label_wrap","title":"Label strings by wrapping across multiple lines — label_wrap","text":"Uses strwrap() split long labels across multiple lines.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label strings by wrapping across multiple lines — label_wrap","text":"","code":"label_wrap(width)"},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label strings by wrapping across multiple lines — label_wrap","text":"width Number characters per line.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label strings by wrapping across multiple lines — label_wrap","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label strings by wrapping across multiple lines — label_wrap","text":"","code":"x <- c( \"this is a long label\", \"this is another long label\", \"this a label this is even longer\" ) demo_discrete(x) #> scale_x_discrete() demo_discrete(x, labels = label_wrap(10)) #> scale_x_discrete(labels = label_wrap(10)) demo_discrete(x, labels = label_wrap(20)) #> scale_x_discrete(labels = label_wrap(20))"},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":null,"dir":"Reference","previous_headings":"","what":"Minor breaks — minor_breaks_width","title":"Minor breaks — minor_breaks_width","text":"Generate minor breaks major breaks either spaced fixed width, fixed number.","code":""},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minor breaks — minor_breaks_width","text":"","code":"minor_breaks_width(width, offset) minor_breaks_n(n)"},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minor breaks — minor_breaks_width","text":"width Distance break. Either number, date/times, single string form \"{n} {unit}\", e.g. \"1 month\", \"5 days\". Unit can one \"sec\", \"min\", \"hour\", \"day\", \"week\", \"month\", \"year\". offset Use want breaks start zero, conventional date time boundary 1st January midnight. Either number, date/times, single string form \"{n} {unit}\", width. offset can vector, accumulate order given. mostly useful dates, e.g. c(\"3 months\", \"5 days\") offset three months five days, useful UK tax year. Note due way dates rounded, guarantee offset = c(x, y) give result offset = c(y, x). n number breaks","code":""},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Minor breaks — minor_breaks_width","text":"","code":"demo_log10(c(1, 1e6)) #> scale_x_log10() if (FALSE) { # Requires https://github.com/tidyverse/ggplot2/pull/3591 demo_log10(c(1, 1e6), minor_breaks = minor_breaks_n(10)) }"},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":null,"dir":"Reference","previous_headings":"","what":"Mute standard colour — muted","title":"Mute standard colour — muted","text":"Mute standard colour","code":""},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mute standard colour — muted","text":"","code":"muted(colour, l = 30, c = 70)"},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mute standard colour — muted","text":"colour character vector colours modify l new luminance c new chroma","code":""},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Mute standard colour — muted","text":"","code":"muted(\"red\") #> [1] \"#832424\" muted(\"blue\") #> [1] \"#3A3A98\" show_col(c(\"red\", \"blue\", muted(\"red\"), muted(\"blue\")))"},{"path":"https://scales.r-lib.org/dev/reference/new_transform.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a new transformation object — new_transform","title":"Create a new transformation object — new_transform","text":"transformation encapsulates transformation inverse, well information needed create pleasing breaks labels. breaks() function applied un-transformed range data, format() function takes output breaks() function returns well-formatted labels. Transformations may also include derivatives transformation inverse, required .","code":""},{"path":"https://scales.r-lib.org/dev/reference/new_transform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a new transformation object — new_transform","text":"","code":"new_transform( name, transform, inverse, d_transform = NULL, d_inverse = NULL, breaks = extended_breaks(), minor_breaks = regular_minor_breaks(), format = format_format(), domain = c(-Inf, Inf) ) trans_new( name, transform, inverse, d_transform = NULL, d_inverse = NULL, breaks = extended_breaks(), minor_breaks = regular_minor_breaks(), format = format_format(), domain = c(-Inf, Inf) ) is.transform(x) is.trans(x) as.transform(x, arg = deparse(substitute(x))) as.trans(x, arg = deparse(substitute(x)))"},{"path":"https://scales.r-lib.org/dev/reference/new_transform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a new transformation object — new_transform","text":"name transformation name transform function, name function, performs transformation inverse function, name function, performs inverse transformation d_transform Optional function, name function, gives derivative transformation. May NULL. d_inverse Optional function, name function, gives derivative inverse transformation. May NULL. breaks default breaks function transformation. breaks function applied un-transformed data. minor_breaks default minor breaks function transformation. format default format transformation. format applied breaks generated un-transformed data. domain allowed range data transformed. function transform argument expected able transform domain argument.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":null,"dir":"Reference","previous_headings":"","what":"A low-level numeric formatter — number","title":"A low-level numeric formatter — number","text":"function low-level helper powers many labelling functions. generally need call directly unless creating labelling function.","code":""},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A low-level numeric formatter — number","text":"","code":"number( x, accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \" \", decimal.mark = \".\", style_positive = c(\"none\", \"plus\", \"space\"), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, trim = TRUE, ... ) cut_short_scale(space = FALSE) cut_long_scale(space = FALSE) cut_time_scale(space = FALSE) cut_si(unit)"},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A low-level numeric formatter — number","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format(). space Add space scale suffix? unit SI unit abbreviation.","code":""},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"A low-level numeric formatter — number","text":"character vector length(x).","code":""},{"path":"https://scales.r-lib.org/dev/reference/number_bytes_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Older interface to label_bytes() — number_bytes_format","title":"Older interface to label_bytes() — number_bytes_format","text":"functions kept backward compatibility, switch label_bytes() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/number_bytes_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Older interface to label_bytes() — number_bytes_format","text":"","code":"number_bytes_format(symbol = \"auto\", units = \"binary\", ...) number_bytes(x, symbol = \"auto\", units = c(\"binary\", \"si\"), accuracy = 1, ...)"},{"path":"https://scales.r-lib.org/dev/reference/number_bytes_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Older interface to label_bytes() — number_bytes_format","text":"symbol byte symbol use. \"auto\" symbol used determined separately value x. Valid symbols \"B\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\" SI units, \"iB\" variants binary units. units unit base use, \"binary\" (1024 base) \"si\" (1000 base)","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":null,"dir":"Reference","previous_headings":"","what":"Out of bounds handling — oob","title":"Out of bounds handling — oob","text":"set functions modify data values outside given range. oob_*() functions designed passed oob argument ggplot2 continuous binned scales, oob_discard exception. functions affect bounds values following ways: oob_censor() replaces bounds values NAs. default oob argument continuous scales. oob_censor_any() acts like oob_censor(), also replaces infinite values NAs. oob_squish() replaces bounds values nearest limit. default oob argument binned scales. oob_squish_any() acts like oob_squish(), also replaces infinite values nearest limit. oob_squish_infinite() replaces infinite values nearest limit. oob_keep() adjust bounds values. position scales, behaves zooming limits without data removal. oob_discard() removes bounds values input. suitable ggplot2 scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Out of bounds handling — oob","text":"","code":"oob_censor(x, range = c(0, 1), only.finite = TRUE) oob_censor_any(x, range = c(0, 1)) oob_discard(x, range = c(0, 1)) oob_squish(x, range = c(0, 1), only.finite = TRUE) oob_squish_any(x, range = c(0, 1)) oob_squish_infinite(x, range = c(0, 1)) oob_keep(x, range = c(0, 1)) censor(x, range = c(0, 1), only.finite = TRUE) discard(x, range = c(0, 1)) squish(x, range = c(0, 1), only.finite = TRUE) squish_infinite(x, range = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Out of bounds handling — oob","text":"x numeric vector values modify. range numeric vector length two giving minimum maximum limit desired output range respectively. .finite logical length one. TRUE, finite values altered. FALSE, also infinite values altered.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Out of bounds handling — oob","text":"oob_() functions return vector numerical values length x argument, wherein bounds values modified. oob_discard() returns vector less equal length x argument.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Out of bounds handling — oob","text":"oob_censor_any() oob_squish_any() functions oob_censor() oob_squish() .finite argument set FALSE. Replacing position values NAs, oob_censor() , typically lead removal datapoints ggplot. Setting ggplot coordinate limits equivalent using oob_keep() position scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"old-interface","dir":"Reference","previous_headings":"","what":"Old interface","title":"Out of bounds handling — oob","text":"censor(), squish(), squish_infinite() discard() longer recommended; please use oob_censor(), oob_squish(), oob_squish_infinite() oob_discard() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Out of bounds handling — oob","text":"oob_squish(): Homer Strong homer.strong@gmail.com","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Out of bounds handling — oob","text":"","code":"# Censoring replaces out of bounds values with NAs oob_censor(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] -Inf NA 0.5 1.0 NA NA Inf oob_censor_any(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] NA NA 0.5 1.0 NA NA NA # Squishing replaces out of bounds values with the nearest range limit oob_squish(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] -Inf 0.0 0.5 1.0 1.0 NA Inf oob_squish_any(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] 0.0 0.0 0.5 1.0 1.0 NA 1.0 oob_squish_infinite(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] 0.0 -1.0 0.5 1.0 2.0 NA 1.0 # Keeping does not alter values oob_keep(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] -Inf -1.0 0.5 1.0 2.0 NA Inf # Discarding will remove out of bounds values oob_discard(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] 0.5 1.0 NA"},{"path":"https://scales.r-lib.org/dev/reference/ordinal_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_ordinal() — ordinal_format","title":"Superseded interface to label_ordinal() — ordinal_format","text":"functions kept backward compatibility; switch label_ordinal() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/ordinal_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_ordinal() — ordinal_format","text":"","code":"ordinal_format( prefix = \"\", suffix = \"\", big.mark = \" \", rules = ordinal_english(), ... ) ordinal( x, prefix = \"\", suffix = \"\", big.mark = \" \", rules = ordinal_english(), ... )"},{"path":"https://scales.r-lib.org/dev/reference/ordinal_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_ordinal() — ordinal_format","text":"prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. rules Named list regular expressions, matched order. Name gives suffix, value specifies numbers match. ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_area.html","id":null,"dir":"Reference","previous_headings":"","what":"Area palettes (continuous) — pal_area","title":"Area palettes (continuous) — pal_area","text":"Area palettes (continuous)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_area.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Area palettes (continuous) — pal_area","text":"","code":"pal_area(range = c(1, 6)) area_pal(range = c(1, 6)) abs_area(max)"},{"path":"https://scales.r-lib.org/dev/reference/pal_area.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Area palettes (continuous) — pal_area","text":"range Numeric vector length two, giving range possible sizes. greater 0. max number representing maximum size.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":null,"dir":"Reference","previous_headings":"","what":"Colour Brewer palette (discrete) — pal_brewer","title":"Colour Brewer palette (discrete) — pal_brewer","text":"Colour Brewer palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Colour Brewer palette (discrete) — pal_brewer","text":"","code":"pal_brewer(type = \"seq\", palette = 1, direction = 1) brewer_pal(type = \"seq\", palette = 1, direction = 1)"},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Colour Brewer palette (discrete) — pal_brewer","text":"type One \"seq\" (sequential), \"div\" (diverging) \"qual\" (qualitative) palette string, use named palette. number, index list palettes appropriate type direction Sets order colours scale. 1, default, colours output RColorBrewer::brewer.pal(). -1, order colours reversed.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Colour Brewer palette (discrete) — pal_brewer","text":"https://colorbrewer2.org","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Colour Brewer palette (discrete) — pal_brewer","text":"","code":"show_col(pal_brewer()(10)) #> Warning: n too large, allowed maximum for palette Blues is 9 #> Returning the palette you asked for with that many colors show_col(pal_brewer(\"div\")(5)) show_col(pal_brewer(palette = \"Greens\")(5)) # Can use with gradient_n to create a continuous gradient cols <- pal_brewer(\"div\")(5) show_col(pal_gradient_n(cols)(seq(0, 1, length.out = 30)))"},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":null,"dir":"Reference","previous_headings":"","what":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"Dichromat (colour-blind) palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"","code":"pal_dichromat(name) dichromat_pal(name)"},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"name Name colour palette. One : BrowntoBlue.10, BrowntoBlue.12, BluetoDarkOrange.12, BluetoDarkOrange.18, DarkRedtoBlue.12, DarkRedtoBlue.18, BluetoGreen.14, BluetoGray.8, BluetoOrangeRed.14, BluetoOrange.10, BluetoOrange.12, BluetoOrange.8, LightBluetoDarkBlue.10, LightBluetoDarkBlue.7, Categorical.12, GreentoMagenta.16, SteppedSequential.5","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"","code":"if (requireNamespace(\"dichromat\", quietly = TRUE)) { show_col(pal_dichromat(\"BluetoOrange.10\")(10)) show_col(pal_dichromat(\"BluetoOrange.10\")(5)) # Can use with gradient_n to create a continous gradient cols <- pal_dichromat(\"DarkRedtoBlue.12\")(12) show_col(pal_gradient_n(cols)(seq(0, 1, length.out = 30))) }"},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":null,"dir":"Reference","previous_headings":"","what":"Diverging colour gradient (continuous). — pal_div_gradient","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"Diverging colour gradient (continuous).","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"","code":"pal_div_gradient( low = mnsl(\"10B 4/6\"), mid = mnsl(\"N 8/0\"), high = mnsl(\"10R 4/6\"), space = \"Lab\" ) div_gradient_pal( low = mnsl(\"10B 4/6\"), mid = mnsl(\"N 8/0\"), high = mnsl(\"10R 4/6\"), space = \"Lab\" )"},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"low colour low end gradient. mid colour mid point high colour high end gradient. space colour space calculate gradient. Must \"Lab\" - values deprecated.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"","code":"x <- seq(-1, 1, length.out = 100) r <- sqrt(outer(x^2, x^2, \"+\")) image(r, col = pal_div_gradient()(seq(0, 1, length.out = 12))) image(r, col = pal_div_gradient()(seq(0, 1, length.out = 30))) image(r, col = pal_div_gradient()(seq(0, 1, length.out = 100))) library(munsell) pal <- pal_div_gradient(low = mnsl(complement(\"10R 4/6\"), fix = TRUE)) image(r, col = pal(seq(0, 1, length.out = 100)))"},{"path":"https://scales.r-lib.org/dev/reference/pal_gradient_n.html","id":null,"dir":"Reference","previous_headings":"","what":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","title":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","text":"Arbitrary colour gradient palette (continuous)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_gradient_n.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","text":"","code":"pal_gradient_n(colours, values = NULL, space = \"Lab\") gradient_n_pal(colours, values = NULL, space = \"Lab\")"},{"path":"https://scales.r-lib.org/dev/reference/pal_gradient_n.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","text":"colours vector colours values colours evenly positioned along gradient vector gives position (0 1) colour colours vector. See rescale() convenience function map arbitrary range 0 1. space colour space calculate gradient. Must \"Lab\" - values deprecated.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":null,"dir":"Reference","previous_headings":"","what":"Grey scale palette (discrete) — pal_grey","title":"Grey scale palette (discrete) — pal_grey","text":"Grey scale palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Grey scale palette (discrete) — pal_grey","text":"","code":"pal_grey(start = 0.2, end = 0.8) grey_pal(start = 0.2, end = 0.8)"},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Grey scale palette (discrete) — pal_grey","text":"start grey value low end palette end grey value high end palette","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Grey scale palette (discrete) — pal_grey","text":"","code":"show_col(pal_grey()(25)) show_col(pal_grey(0, 1)(25))"},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":null,"dir":"Reference","previous_headings":"","what":"Hue palette (discrete) — pal_hue","title":"Hue palette (discrete) — pal_hue","text":"Hue palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hue palette (discrete) — pal_hue","text":"","code":"pal_hue(h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1) hue_pal(h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1)"},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hue palette (discrete) — pal_hue","text":"h range hues use, [0, 360] c chroma (intensity colour), maximum value varies depending combination hue luminance. l luminance (lightness), [0, 100] h.start hue start direction direction travel around colour wheel, 1 = clockwise, -1 = counter-clockwise","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Hue palette (discrete) — pal_hue","text":"","code":"show_col(pal_hue()(4)) show_col(pal_hue()(9)) show_col(pal_hue(l = 90)(9)) show_col(pal_hue(l = 30)(9)) show_col(pal_hue()(9)) show_col(pal_hue(direction = -1)(9)) show_col(pal_hue(h.start = 30)(9)) show_col(pal_hue(h.start = 90)(9)) show_col(pal_hue()(9)) show_col(pal_hue(h = c(0, 90))(9)) show_col(pal_hue(h = c(90, 180))(9)) show_col(pal_hue(h = c(180, 270))(9)) show_col(pal_hue(h = c(270, 360))(9))"},{"path":"https://scales.r-lib.org/dev/reference/pal_identity.html","id":null,"dir":"Reference","previous_headings":"","what":"Identity palette — pal_identity","title":"Identity palette — pal_identity","text":"Leaves values unchanged - useful data already scaled.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_identity.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Identity palette — pal_identity","text":"","code":"pal_identity() identity_pal()"},{"path":"https://scales.r-lib.org/dev/reference/pal_linetype.html","id":null,"dir":"Reference","previous_headings":"","what":"Line type palette (discrete) — pal_linetype","title":"Line type palette (discrete) — pal_linetype","text":"Based set supplied Richard Pearson, University Manchester","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_linetype.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Line type palette (discrete) — pal_linetype","text":"","code":"pal_linetype() linetype_pal()"},{"path":"https://scales.r-lib.org/dev/reference/pal_manual.html","id":null,"dir":"Reference","previous_headings":"","what":"Manual palette (discrete) — pal_manual","title":"Manual palette (discrete) — pal_manual","text":"Manual palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_manual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manual palette (discrete) — pal_manual","text":"","code":"pal_manual(values) manual_pal(values)"},{"path":"https://scales.r-lib.org/dev/reference/pal_manual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Manual palette (discrete) — pal_manual","text":"values vector values used palette.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_rescale.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale palette (continuous) — pal_rescale","title":"Rescale palette (continuous) — pal_rescale","text":"Just rescales input specific output range. Useful alpha, size, continuous position.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_rescale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale palette (continuous) — pal_rescale","text":"","code":"pal_rescale(range = c(0.1, 1)) rescale_pal(range = c(0.1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/pal_rescale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale palette (continuous) — pal_rescale","text":"range Numeric vector length two, giving range possible values. 0 1.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":null,"dir":"Reference","previous_headings":"","what":"Sequential colour gradient palette (continuous) — pal_seq_gradient","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"Sequential colour gradient palette (continuous)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"","code":"pal_seq_gradient(low = mnsl(\"10B 4/6\"), high = mnsl(\"10R 4/6\"), space = \"Lab\") seq_gradient_pal(low = mnsl(\"10B 4/6\"), high = mnsl(\"10R 4/6\"), space = \"Lab\")"},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"low colour low end gradient. high colour high end gradient. space colour space calculate gradient. Must \"Lab\" - values deprecated.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"","code":"x <- seq(0, 1, length.out = 25) show_col(pal_seq_gradient()(x)) show_col(pal_seq_gradient(\"white\", \"black\")(x)) library(munsell) show_col(pal_seq_gradient(\"white\", mnsl(\"10R 4/6\"))(x))"},{"path":"https://scales.r-lib.org/dev/reference/pal_shape.html","id":null,"dir":"Reference","previous_headings":"","what":"Shape palette (discrete) — pal_shape","title":"Shape palette (discrete) — pal_shape","text":"Shape palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_shape.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Shape palette (discrete) — pal_shape","text":"","code":"pal_shape(solid = TRUE) shape_pal(solid = TRUE)"},{"path":"https://scales.r-lib.org/dev/reference/pal_shape.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Shape palette (discrete) — pal_shape","text":"solid shapes solid ?","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":null,"dir":"Reference","previous_headings":"","what":"Viridis palette — pal_viridis","title":"Viridis palette — pal_viridis","text":"Viridis palette","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Viridis palette — pal_viridis","text":"","code":"pal_viridis(alpha = 1, begin = 0, end = 1, direction = 1, option = \"D\") viridis_pal(alpha = 1, begin = 0, end = 1, direction = 1, option = \"D\")"},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Viridis palette — pal_viridis","text":"alpha alpha transparency, number [0,1], see argument alpha hsv. begin, end (corrected) hue [0,1] color map begins ends. direction Sets order colors scale. 1, default, colors ordered darkest lightest. -1, order colors reversed. option character string indicating color map option use. Eight options available: \"magma\" (\"\") \"inferno\" (\"B\") \"plasma\" (\"C\") \"viridis\" (\"D\") \"cividis\" (\"E\") \"rocket\" (\"F\") \"mako\" (\"G\") \"turbo\" (\"H\")","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Viridis palette — pal_viridis","text":"https://bids.github.io/colormap/","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Viridis palette — pal_viridis","text":"","code":"show_col(pal_viridis()(10)) show_col(pal_viridis(direction = -1)(6)) show_col(pal_viridis(begin = 0.2, end = 0.8)(4)) show_col(pal_viridis(option = \"plasma\")(6))"},{"path":"https://scales.r-lib.org/dev/reference/parse_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_parse()/label_math() — parse_format","title":"Superseded interface to label_parse()/label_math() — parse_format","text":"functions kept backward compatibility; switch label_parse()/label_math() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/parse_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_parse()/label_math() — parse_format","text":"","code":"parse_format() math_format(expr = 10^.x, format = force)"},{"path":"https://scales.r-lib.org/dev/reference/parse_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_parse()/label_math() — parse_format","text":"expr expression use format another format function apply prior mathematical transformation - makes easier use floating point numbers mathematical expressions.","code":""},{"path":"https://scales.r-lib.org/dev/reference/percent_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_percent() — percent_format","title":"Superseded interface to label_percent() — percent_format","text":"functions kept backward compatibility; switch label_percent() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/percent_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_percent() — percent_format","text":"","code":"percent_format( accuracy = NULL, scale = 100, prefix = \"\", suffix = \"%\", big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... ) percent( x, accuracy = NULL, scale = 100, prefix = \"\", suffix = \"%\", big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/percent_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_percent() — percent_format","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/pretty_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to breaks_pretty() — pretty_breaks","title":"Superseded interface to breaks_pretty() — pretty_breaks","text":"functions kept backward compatibility; switch breaks_pretty() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pretty_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to breaks_pretty() — pretty_breaks","text":"","code":"pretty_breaks(n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/pretty_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to breaks_pretty() — pretty_breaks","text":"n Desired number breaks. may get slightly fewer breaks requested. ... arguments passed pretty()","code":""},{"path":"https://scales.r-lib.org/dev/reference/pvalue_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_pvalue() — pvalue_format","title":"Superseded interface to label_pvalue() — pvalue_format","text":"functions kept backward compatibility; switch label_pvalue() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pvalue_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_pvalue() — pvalue_format","text":"","code":"pvalue_format( accuracy = 0.001, decimal.mark = \".\", prefix = NULL, add_p = FALSE ) pvalue(x, accuracy = 0.001, decimal.mark = \".\", prefix = NULL, add_p = FALSE)"},{"path":"https://scales.r-lib.org/dev/reference/pvalue_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_pvalue() — pvalue_format","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. decimal.mark character used indicate numeric decimal point. prefix character vector length 3 giving prefixes put front numbers. default values c(\"<\", \"\", \">\") add_p TRUE c(\"p<\", \"p=\", \"p>\") FALSE. add_p Add \"p=\" value?","code":""},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Minor breaks — regular_minor_breaks","title":"Minor breaks — regular_minor_breaks","text":"Places minor breaks major breaks.","code":""},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minor breaks — regular_minor_breaks","text":"","code":"regular_minor_breaks(reverse = FALSE)"},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minor breaks — regular_minor_breaks","text":"reverse TRUE, calculates minor breaks reversed scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Minor breaks — regular_minor_breaks","text":"","code":"m <- extended_breaks()(c(1, 10)) regular_minor_breaks()(m, c(1, 10), n = 2) #> [1] 0.00 1.25 2.50 3.75 5.00 6.25 7.50 8.75 10.00 n <- extended_breaks()(c(0, -9)) regular_minor_breaks(reverse = TRUE)(n, c(0, -9), n = 2) #> [1] -10.00 -8.75 -7.50 -6.25 -5.00 -3.75 -2.50 -1.25 0.00"},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale continuous vector to have specified minimum and maximum — rescale","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"Rescale continuous vector specified minimum maximum","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"","code":"rescale(x, to, from, ...) # S3 method for numeric rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for dist rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for logical rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for POSIXt rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for Date rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for integer64 rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE), ...) # S3 method for difftime rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for AsIs rescale(x, to, from, ...)"},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"x continuous vector values manipulate. output range (numeric vector length two) input range (vector length two). given, calculated range x ... arguments passed methods","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"Objects class returned unaltered.","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"","code":"rescale(1:100) #> [1] 0.00000000 0.01010101 0.02020202 0.03030303 0.04040404 0.05050505 #> [7] 0.06060606 0.07070707 0.08080808 0.09090909 0.10101010 0.11111111 #> [13] 0.12121212 0.13131313 0.14141414 0.15151515 0.16161616 0.17171717 #> [19] 0.18181818 0.19191919 0.20202020 0.21212121 0.22222222 0.23232323 #> [25] 0.24242424 0.25252525 0.26262626 0.27272727 0.28282828 0.29292929 #> [31] 0.30303030 0.31313131 0.32323232 0.33333333 0.34343434 0.35353535 #> [37] 0.36363636 0.37373737 0.38383838 0.39393939 0.40404040 0.41414141 #> [43] 0.42424242 0.43434343 0.44444444 0.45454545 0.46464646 0.47474747 #> [49] 0.48484848 0.49494949 0.50505051 0.51515152 0.52525253 0.53535354 #> [55] 0.54545455 0.55555556 0.56565657 0.57575758 0.58585859 0.59595960 #> [61] 0.60606061 0.61616162 0.62626263 0.63636364 0.64646465 0.65656566 #> [67] 0.66666667 0.67676768 0.68686869 0.69696970 0.70707071 0.71717172 #> [73] 0.72727273 0.73737374 0.74747475 0.75757576 0.76767677 0.77777778 #> [79] 0.78787879 0.79797980 0.80808081 0.81818182 0.82828283 0.83838384 #> [85] 0.84848485 0.85858586 0.86868687 0.87878788 0.88888889 0.89898990 #> [91] 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596 #> [97] 0.96969697 0.97979798 0.98989899 1.00000000 rescale(runif(50)) #> [1] 0.097863448 0.089205267 0.000000000 0.918025709 0.682348642 #> [6] 0.219357716 0.894298526 0.490998516 0.448452794 0.160434625 #> [11] 0.568181349 0.037845759 0.408633935 0.734251977 0.137752396 #> [16] 0.488061570 1.000000000 0.481601429 0.235140261 0.112163563 #> [21] 0.587820775 0.903681538 0.761873897 0.513440891 0.094846833 #> [26] 0.877818190 0.241890223 0.824663619 0.273589691 0.553163762 #> [31] 0.623910550 0.106251310 0.284481254 0.376040506 0.802524279 #> [36] 0.332143827 0.604657132 0.001731694 0.149926245 0.925675077 #> [41] 0.646065236 0.651165070 0.352991560 0.116063163 0.690422331 #> [46] 0.416967837 0.485344498 0.450347939 0.137698816 0.199607430 rescale(1) #> [1] 0.5"},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale numeric vector to have specified maximum — rescale_max","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"Rescale numeric vector specified maximum","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"","code":"rescale_max(x, to = c(0, 1), from = range(x, na.rm = TRUE))"},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"x numeric vector values manipulate. output range (numeric vector length two) input range (numeric vector length two). given, calculated range x","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"","code":"rescale_max(1:100) #> [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 #> [14] 0.14 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 #> [27] 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 #> [40] 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 #> [53] 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 #> [66] 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 #> [79] 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 #> [92] 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00 rescale_max(runif(50)) #> [1] 0.81087775 0.14015939 0.52048495 1.00000000 0.09511294 0.37552283 #> [7] 0.78010890 0.13344161 0.36574935 0.96226094 0.05733376 0.84953049 #> [13] 0.73332758 0.07571846 0.04687065 0.95350365 0.38193952 0.13087788 #> [19] 0.13144049 0.08379662 0.58081502 0.79378594 0.25921533 0.04259798 #> [25] 0.58907035 0.60047506 0.16642745 0.16000040 0.32077432 0.25734708 #> [31] 0.07410776 0.98228590 0.32979666 0.98376865 0.14351964 0.83465088 #> [37] 0.04272907 0.41651989 0.83476742 0.89837459 0.81835351 0.51062215 #> [43] 0.06033641 0.03406351 0.80711335 0.96169187 0.18048723 0.44414152 #> [49] 0.34477836 0.56251887 rescale_max(1) #> [1] 1"},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"Rescale vector specified minimum, midpoint, maximum","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"","code":"rescale_mid(x, to, from, mid, ...) # S3 method for numeric rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for logical rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for dist rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for POSIXt rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid, ...) # S3 method for Date rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid, ...) # S3 method for integer64 rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for AsIs rescale_mid(x, to, from, ...)"},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"x vector values manipulate. output range (numeric vector length two) input range (vector length two). given, calculated range x mid mid-point input range ... arguments passed methods","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"Objects class returned unaltered.","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"","code":"rescale_mid(1:100, mid = 50.5) #> [1] 0.00000000 0.01010101 0.02020202 0.03030303 0.04040404 0.05050505 #> [7] 0.06060606 0.07070707 0.08080808 0.09090909 0.10101010 0.11111111 #> [13] 0.12121212 0.13131313 0.14141414 0.15151515 0.16161616 0.17171717 #> [19] 0.18181818 0.19191919 0.20202020 0.21212121 0.22222222 0.23232323 #> [25] 0.24242424 0.25252525 0.26262626 0.27272727 0.28282828 0.29292929 #> [31] 0.30303030 0.31313131 0.32323232 0.33333333 0.34343434 0.35353535 #> [37] 0.36363636 0.37373737 0.38383838 0.39393939 0.40404040 0.41414141 #> [43] 0.42424242 0.43434343 0.44444444 0.45454545 0.46464646 0.47474747 #> [49] 0.48484848 0.49494949 0.50505051 0.51515152 0.52525253 0.53535354 #> [55] 0.54545455 0.55555556 0.56565657 0.57575758 0.58585859 0.59595960 #> [61] 0.60606061 0.61616162 0.62626263 0.63636364 0.64646465 0.65656566 #> [67] 0.66666667 0.67676768 0.68686869 0.69696970 0.70707071 0.71717172 #> [73] 0.72727273 0.73737374 0.74747475 0.75757576 0.76767677 0.77777778 #> [79] 0.78787879 0.79797980 0.80808081 0.81818182 0.82828283 0.83838384 #> [85] 0.84848485 0.85858586 0.86868687 0.87878788 0.88888889 0.89898990 #> [91] 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596 #> [97] 0.96969697 0.97979798 0.98989899 1.00000000 rescale_mid(runif(50), mid = 0.5) #> [1] 0.585047180 0.957953185 0.748511831 0.076787166 1.000000000 #> [6] 0.208414952 0.883962809 0.257569092 0.880418316 0.292916994 #> [11] 0.795714422 0.159036622 0.099984847 0.008641997 0.639744044 #> [16] 0.764131247 0.109223026 0.457422736 0.811209592 0.877100391 #> [21] 0.131980582 0.869706561 0.769706887 0.989167733 0.863721648 #> [26] 0.247551748 0.643129347 0.113905987 0.098085140 0.542676225 #> [31] 0.048620695 0.153680485 0.556706744 0.630888396 0.718784483 #> [36] 0.087316760 0.718583090 0.085383236 0.766997455 0.888752983 #> [41] 0.201922690 0.778570781 0.936478837 0.846148528 0.735543216 #> [46] 0.874812359 0.192393092 0.586926775 0.363186775 0.678246448 rescale_mid(1) #> [1] 0.5"},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":null,"dir":"Reference","previous_headings":"","what":"Don't perform rescaling — rescale_none","title":"Don't perform rescaling — rescale_none","text":"perform rescaling","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Don't perform rescaling — rescale_none","text":"","code":"rescale_none(x, ...)"},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Don't perform rescaling — rescale_none","text":"x numeric vector values manipulate. ... arguments ignored","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Don't perform rescaling — rescale_none","text":"","code":"rescale_none(1:100) #> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #> [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #> [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #> [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #> [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 #> [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"},{"path":"https://scales.r-lib.org/dev/reference/scales-package.html","id":null,"dir":"Reference","previous_headings":"","what":"scales: Scale Functions for Visualization — scales-package","title":"scales: Scale Functions for Visualization — scales-package","text":"Graphical scales map data aesthetics, provide methods automatically determining breaks labels axes legends.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/scales-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"scales: Scale Functions for Visualization — scales-package","text":"Maintainer: Thomas Lin Pedersen thomas.pedersen@posit.co (ORCID) Authors: Hadley Wickham hadley@posit.co Dana Seidel contributors: Posit, PBC [copyright holder, funder]","code":""},{"path":"https://scales.r-lib.org/dev/reference/scientific_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_scientific() — scientific_format","title":"Superseded interface to label_scientific() — scientific_format","text":"functions kept backward compatibility; switch label_scientific() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/scientific_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_scientific() — scientific_format","text":"","code":"scientific_format( digits = 3, scale = 1, prefix = \"\", suffix = \"\", decimal.mark = \".\", trim = TRUE, ... ) scientific( x, digits = 3, scale = 1, prefix = \"\", suffix = \"\", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/scientific_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_scientific() — scientific_format","text":"digits Number digits show exponent. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":null,"dir":"Reference","previous_headings":"","what":"Show colours — show_col","title":"Show colours — show_col","text":"quick dirty way show colours plot.","code":""},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Show colours — show_col","text":"","code":"show_col(colours, labels = TRUE, borders = NULL, cex_label = 1, ncol = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Show colours — show_col","text":"colours character vector colours labels Label colour hex name? borders Border colour tile. Default uses par(\"fg\"). Use border = NA omit borders. cex_label Size printed labels, multiplier default size. ncol Number columns. supplied, tries square possible.","code":""},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Show colours — show_col","text":"","code":"show_col(pal_hue()(9)) show_col(pal_hue()(9), borders = NA) show_col(pal_viridis()(16)) show_col(pal_viridis()(16), labels = FALSE)"},{"path":"https://scales.r-lib.org/dev/reference/train_continuous.html","id":null,"dir":"Reference","previous_headings":"","what":"Train (update) a continuous scale — train_continuous","title":"Train (update) a continuous scale — train_continuous","text":"Strips attributes always returns numeric vector","code":""},{"path":"https://scales.r-lib.org/dev/reference/train_continuous.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Train (update) a continuous scale — train_continuous","text":"","code":"train_continuous(new, existing = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/train_continuous.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Train (update) a continuous scale — train_continuous","text":"new New data add scale existing Optional existing scale update","code":""},{"path":"https://scales.r-lib.org/dev/reference/train_discrete.html","id":null,"dir":"Reference","previous_headings":"","what":"Train (update) a discrete scale — train_discrete","title":"Train (update) a discrete scale — train_discrete","text":"Train (update) discrete scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/train_discrete.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Train (update) a discrete scale — train_discrete","text":"","code":"train_discrete(new, existing = NULL, drop = FALSE, na.rm = FALSE, fct = NA)"},{"path":"https://scales.r-lib.org/dev/reference/train_discrete.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Train (update) a discrete scale — train_discrete","text":"new New data add scale existing Optional existing scale update drop TRUE, drop factor levels associated data na.rm TRUE, remove missing values fct Treat existing came factor (ie. sort range)","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Pretty breaks on transformed scale — trans_breaks","title":"Pretty breaks on transformed scale — trans_breaks","text":"often produce attractive breaks.","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pretty breaks on transformed scale — trans_breaks","text":"","code":"trans_breaks(trans, inv, n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pretty breaks on transformed scale — trans_breaks","text":"trans function single variable, x, given numeric vector returns transformed values inv inverse transformation function n desired number ticks ... arguments passed pretty","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pretty breaks on transformed scale — trans_breaks","text":"","code":"trans_breaks(\"log10\", function(x) 10^x)(c(1, 1e6)) #> [1] 1e+00 1e+01 1e+02 1e+03 1e+04 1e+05 1e+06 trans_breaks(\"sqrt\", function(x) x^2)(c(1, 100)) #> [1] 0 4 16 36 64 100 trans_breaks(function(x) 1 / x, function(x) 1 / x)(c(1, 100)) #> [1] Inf 5.000000 2.500000 1.666667 1.250000 1.000000 trans_breaks(function(x) -x, function(x) -x)(c(1, 100)) #> [1] 100 80 60 40 20 0"},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Format labels after transformation — trans_format","text":"","code":"trans_format(trans, format = scientific_format())"},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Format labels after transformation — trans_format","text":"trans transformation apply format additional formatter apply transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Format labels after transformation — trans_format","text":"function single parameter x, numeric vector, returns character vector list expressions","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Format labels after transformation — trans_format","text":"","code":"tf <- trans_format(\"log10\", scientific_format()) tf(10^1:6) #> [1] \"1.00e+00\" \"9.54e-01\" \"9.03e-01\" \"8.45e-01\" \"7.78e-01\""},{"path":"https://scales.r-lib.org/dev/reference/transform_asinh.html","id":null,"dir":"Reference","previous_headings":"","what":"Inverse Hyperbolic Sine transformation — transform_asinh","title":"Inverse Hyperbolic Sine transformation — transform_asinh","text":"Inverse Hyperbolic Sine transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_asinh.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Inverse Hyperbolic Sine transformation — transform_asinh","text":"","code":"transform_asinh() asinh_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_asinh.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Inverse Hyperbolic Sine transformation — transform_asinh","text":"","code":"plot(transform_asinh(), xlim = c(-1e2, 1e2))"},{"path":"https://scales.r-lib.org/dev/reference/transform_asn.html","id":null,"dir":"Reference","previous_headings":"","what":"Arc-sin square root transformation — transform_asn","title":"Arc-sin square root transformation — transform_asn","text":"variance stabilising transformation binomial distribution.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_asn.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arc-sin square root transformation — transform_asn","text":"","code":"transform_asn() asn_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_asn.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Arc-sin square root transformation — transform_asn","text":"","code":"plot(transform_asn(), xlim = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_atanh.html","id":null,"dir":"Reference","previous_headings":"","what":"Arc-tangent transformation — transform_atanh","title":"Arc-tangent transformation — transform_atanh","text":"Arc-tangent transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_atanh.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arc-tangent transformation — transform_atanh","text":"","code":"transform_atanh() atanh_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_atanh.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Arc-tangent transformation — transform_atanh","text":"","code":"plot(transform_atanh(), xlim = c(-1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":null,"dir":"Reference","previous_headings":"","what":"Box-Cox & modulus transformations — transform_boxcox","title":"Box-Cox & modulus transformations — transform_boxcox","text":"Box-Cox transformation flexible transformation, often used transform data towards normality. modulus transformation generalises Box-Cox also work negative values.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Box-Cox & modulus transformations — transform_boxcox","text":"","code":"transform_boxcox(p, offset = 0) boxcox_trans(p, offset = 0) transform_modulus(p, offset = 1) modulus_trans(p, offset = 1)"},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Box-Cox & modulus transformations — transform_boxcox","text":"p Transformation exponent, \\(\\lambda\\). offset Constant offset. 0 Box-Cox type 1, otherwise non-negative constant (Box-Cox type 2). transform_modulus() sets default 1.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Box-Cox & modulus transformations — transform_boxcox","text":"Box-Cox power transformation (type 1) requires strictly positive values takes following form y > 0: $$y^{(\\lambda)} = \\frac{y^\\lambda - 1}{\\lambda}$$ y = 0, natural log transform used. modulus transformation implements generalisation Box-Cox transformation works data positive negative values. equation takes following forms, y != 0 : $$y^{(\\lambda)} = sign(y) * \\frac{(|y| + 1)^\\lambda - 1}{\\lambda}$$ y = 0: $$y^{(\\lambda)} = sign(y) * \\ln(|y| + 1)$$","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Box-Cox & modulus transformations — transform_boxcox","text":"Box, G. E., & Cox, D. R. (1964). analysis transformations. Journal Royal Statistical Society. Series B (Methodological), 211-252. https://www.jstor.org/stable/2984418 John, J. ., & Draper, N. R. (1980). alternative family transformations. Applied Statistics, 190-197. https://www.jstor.org/stable/2986305","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Box-Cox & modulus transformations — transform_boxcox","text":"","code":"plot(transform_boxcox(-1), xlim = c(0, 10)) plot(transform_boxcox(0), xlim = c(0, 10)) plot(transform_boxcox(1), xlim = c(0, 10)) plot(transform_boxcox(2), xlim = c(0, 10)) plot(transform_modulus(-1), xlim = c(-10, 10)) plot(transform_modulus(0), xlim = c(-10, 10)) plot(transform_modulus(1), xlim = c(-10, 10)) plot(transform_modulus(2), xlim = c(-10, 10))"},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":null,"dir":"Reference","previous_headings":"","what":"Compose two or more transformations together — transform_compose","title":"Compose two or more transformations together — transform_compose","text":"transformer provides general mechanism composing two transformers together. important use case combine reverse transformations.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compose two or more transformations together — transform_compose","text":"","code":"transform_compose(...) compose_trans(...)"},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compose two or more transformations together — transform_compose","text":"... One transformers, either specified string individual transformer objects.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compose two or more transformations together — transform_compose","text":"","code":"demo_continuous(10^c(-2:4), trans = \"log10\", labels = label_log()) #> scale_x_continuous(trans = \"log10\", labels = label_log()) demo_continuous(10^c(-2:4), trans = c(\"log10\", \"reverse\"), labels = label_log()) #> scale_x_continuous(trans = c(\"log10\", \"reverse\"), labels = label_log())"},{"path":"https://scales.r-lib.org/dev/reference/transform_date.html","id":null,"dir":"Reference","previous_headings":"","what":"Transformation for dates (class Date) — transform_date","title":"Transformation for dates (class Date) — transform_date","text":"Transformation dates (class Date)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_date.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transformation for dates (class Date) — transform_date","text":"","code":"transform_date() date_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_date.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transformation for dates (class Date) — transform_date","text":"","code":"years <- seq(as.Date(\"1910/1/1\"), as.Date(\"1999/1/1\"), \"years\") t <- transform_date() t$transform(years) #> [1] -21915 -21550 -21185 -20819 -20454 -20089 -19724 -19358 -18993 -18628 #> [11] -18263 -17897 -17532 -17167 -16802 -16436 -16071 -15706 -15341 -14975 #> [21] -14610 -14245 -13880 -13514 -13149 -12784 -12419 -12053 -11688 -11323 #> [31] -10958 -10592 -10227 -9862 -9497 -9131 -8766 -8401 -8036 -7670 #> [41] -7305 -6940 -6575 -6209 -5844 -5479 -5114 -4748 -4383 -4018 #> [51] -3653 -3287 -2922 -2557 -2192 -1826 -1461 -1096 -731 -365 #> [61] 0 365 730 1096 1461 1826 2191 2557 2922 3287 #> [71] 3652 4018 4383 4748 5113 5479 5844 6209 6574 6940 #> [81] 7305 7670 8035 8401 8766 9131 9496 9862 10227 10592 t$inverse(t$transform(years)) #> [1] \"1910-01-01\" \"1911-01-01\" \"1912-01-01\" \"1913-01-01\" \"1914-01-01\" #> [6] \"1915-01-01\" \"1916-01-01\" \"1917-01-01\" \"1918-01-01\" \"1919-01-01\" #> [11] \"1920-01-01\" \"1921-01-01\" \"1922-01-01\" \"1923-01-01\" \"1924-01-01\" #> [16] \"1925-01-01\" \"1926-01-01\" \"1927-01-01\" \"1928-01-01\" \"1929-01-01\" #> [21] \"1930-01-01\" \"1931-01-01\" \"1932-01-01\" \"1933-01-01\" \"1934-01-01\" #> [26] \"1935-01-01\" \"1936-01-01\" \"1937-01-01\" \"1938-01-01\" \"1939-01-01\" #> [31] \"1940-01-01\" \"1941-01-01\" \"1942-01-01\" \"1943-01-01\" \"1944-01-01\" #> [36] \"1945-01-01\" \"1946-01-01\" \"1947-01-01\" \"1948-01-01\" \"1949-01-01\" #> [41] \"1950-01-01\" \"1951-01-01\" \"1952-01-01\" \"1953-01-01\" \"1954-01-01\" #> [46] \"1955-01-01\" \"1956-01-01\" \"1957-01-01\" \"1958-01-01\" \"1959-01-01\" #> [51] \"1960-01-01\" \"1961-01-01\" \"1962-01-01\" \"1963-01-01\" \"1964-01-01\" #> [56] \"1965-01-01\" \"1966-01-01\" \"1967-01-01\" \"1968-01-01\" \"1969-01-01\" #> [61] \"1970-01-01\" \"1971-01-01\" \"1972-01-01\" \"1973-01-01\" \"1974-01-01\" #> [66] \"1975-01-01\" \"1976-01-01\" \"1977-01-01\" \"1978-01-01\" \"1979-01-01\" #> [71] \"1980-01-01\" \"1981-01-01\" \"1982-01-01\" \"1983-01-01\" \"1984-01-01\" #> [76] \"1985-01-01\" \"1986-01-01\" \"1987-01-01\" \"1988-01-01\" \"1989-01-01\" #> [81] \"1990-01-01\" \"1991-01-01\" \"1992-01-01\" \"1993-01-01\" \"1994-01-01\" #> [86] \"1995-01-01\" \"1996-01-01\" \"1997-01-01\" \"1998-01-01\" \"1999-01-01\" t$format(t$breaks(range(years))) #> [1] \"1900\" \"1920\" \"1940\" \"1960\" \"1980\" \"2000\""},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential transformation (inverse of log transformation) — transform_exp","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"Exponential transformation (inverse log transformation)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"","code":"transform_exp(base = exp(1)) exp_trans(base = exp(1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"base Base logarithm","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"","code":"plot(transform_exp(0.5), xlim = c(-2, 2)) plot(transform_exp(1), xlim = c(-2, 2)) plot(transform_exp(2), xlim = c(-2, 2)) plot(transform_exp(), xlim = c(-2, 2))"},{"path":"https://scales.r-lib.org/dev/reference/transform_identity.html","id":null,"dir":"Reference","previous_headings":"","what":"Identity transformation (do nothing) — transform_identity","title":"Identity transformation (do nothing) — transform_identity","text":"Identity transformation (nothing)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_identity.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Identity transformation (do nothing) — transform_identity","text":"","code":"transform_identity() identity_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_identity.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Identity transformation (do nothing) — transform_identity","text":"","code":"plot(transform_identity(), xlim = c(-1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":null,"dir":"Reference","previous_headings":"","what":"Log transformations — transform_log","title":"Log transformations — transform_log","text":"transform_log(): log(x) log1p(): log(x + 1) transform_pseudo_log(): smoothly transition linear scale around 0.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log transformations — transform_log","text":"","code":"transform_log(base = exp(1)) transform_log10() transform_log2() transform_log1p() log_trans(base = exp(1)) log10_trans() log2_trans() log1p_trans() transform_pseudo_log(sigma = 1, base = exp(1)) pseudo_log_trans(sigma = 1, base = exp(1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log transformations — transform_log","text":"base base logarithm sigma Scaling factor linear part pseudo-log transformation.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Log transformations — transform_log","text":"","code":"plot(transform_log2(), xlim = c(0, 5)) plot(transform_log(), xlim = c(0, 5)) plot(transform_log10(), xlim = c(0, 5)) plot(transform_log(), xlim = c(0, 2)) plot(transform_log1p(), xlim = c(-1, 1)) # The pseudo-log is defined for all real numbers plot(transform_pseudo_log(), xlim = c(-5, 5)) lines(transform_log(), xlim = c(0, 5), col = \"red\") # For large positives numbers it's very close to log plot(transform_pseudo_log(), xlim = c(1, 20)) lines(transform_log(), xlim = c(1, 20), col = \"red\")"},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":null,"dir":"Reference","previous_headings":"","what":"Probability transformation — transform_probability","title":"Probability transformation — transform_probability","text":"Probability transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probability transformation — transform_probability","text":"","code":"transform_probability(distribution, ...) transform_logit() transform_probit() probability_trans(distribution, ...) logit_trans() probit_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probability transformation — transform_probability","text":"distribution probability distribution. standard R abbreviation \"p\" + distribution valid cumulative distribution function, \"q\" + distribution valid quantile function, \"d\" + distribution valid probability density function. ... arguments passed distribution quantile functions","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Probability transformation — transform_probability","text":"","code":"plot(transform_logit(), xlim = c(0, 1)) plot(transform_probit(), xlim = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_reciprocal.html","id":null,"dir":"Reference","previous_headings":"","what":"Reciprocal transformation — transform_reciprocal","title":"Reciprocal transformation — transform_reciprocal","text":"Reciprocal transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_reciprocal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reciprocal transformation — transform_reciprocal","text":"","code":"transform_reciprocal() reciprocal_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_reciprocal.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reciprocal transformation — transform_reciprocal","text":"","code":"plot(transform_reciprocal(), xlim = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_reverse.html","id":null,"dir":"Reference","previous_headings":"","what":"Reverse transformation — transform_reverse","title":"Reverse transformation — transform_reverse","text":"reversing transformation works multiplying input -1. means reverse transformation easily composed transformations require positive input unless reversing done final step.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_reverse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reverse transformation — transform_reverse","text":"","code":"transform_reverse() reverse_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_reverse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reverse transformation — transform_reverse","text":"","code":"plot(transform_reverse(), xlim = c(-1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_sqrt.html","id":null,"dir":"Reference","previous_headings":"","what":"Square-root transformation — transform_sqrt","title":"Square-root transformation — transform_sqrt","text":"variance stabilising transformation Poisson distribution.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_sqrt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Square-root transformation — transform_sqrt","text":"","code":"transform_sqrt() sqrt_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_sqrt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Square-root transformation — transform_sqrt","text":"","code":"plot(transform_sqrt(), xlim = c(0, 5))"},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":null,"dir":"Reference","previous_headings":"","what":"Transformation for date-times (class POSIXt) — transform_time","title":"Transformation for date-times (class POSIXt) — transform_time","text":"Transformation date-times (class POSIXt)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transformation for date-times (class POSIXt) — transform_time","text":"","code":"transform_time(tz = NULL) time_trans(tz = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transformation for date-times (class POSIXt) — transform_time","text":"tz Optionally supply time zone. NULL, default, time zone extracted first input non-null tz.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transformation for date-times (class POSIXt) — transform_time","text":"","code":"hours <- seq(ISOdate(2000, 3, 20, tz = \"\"), by = \"hour\", length.out = 10) t <- transform_time() t$transform(hours) #> [1] 953553600 953557200 953560800 953564400 953568000 953571600 953575200 #> [8] 953578800 953582400 953586000 t$inverse(t$transform(hours)) #> [1] \"2000-03-20 12:00:00 UTC\" \"2000-03-20 13:00:00 UTC\" #> [3] \"2000-03-20 14:00:00 UTC\" \"2000-03-20 15:00:00 UTC\" #> [5] \"2000-03-20 16:00:00 UTC\" \"2000-03-20 17:00:00 UTC\" #> [7] \"2000-03-20 18:00:00 UTC\" \"2000-03-20 19:00:00 UTC\" #> [9] \"2000-03-20 20:00:00 UTC\" \"2000-03-20 21:00:00 UTC\" t$format(t$breaks(range(hours))) #> [1] \"12:00\" \"15:00\" \"18:00\" \"21:00\""},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":null,"dir":"Reference","previous_headings":"","what":"Transformation for times (class hms) — transform_timespan","title":"Transformation for times (class hms) — transform_timespan","text":"transform_timespan() provides transformations data encoding time passed along breaks label formatting showing standard unit time fitting range data. transform_hms() provides using standard hms idioms formatting.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transformation for times (class hms) — transform_timespan","text":"","code":"transform_timespan(unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\")) timespan_trans(unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\")) transform_hms() hms_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transformation for times (class hms) — transform_timespan","text":"unit unit used interpret numeric input","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transformation for times (class hms) — transform_timespan","text":"","code":"# transform_timespan allows you to specify the time unit numeric data is # interpreted in trans_min <- transform_timespan(\"mins\") demo_timespan(seq(0, 100), trans = trans_min) #> scale_x_continuous(trans = trans_min) # Input already in difftime format is interpreted correctly demo_timespan(as.difftime(seq(0, 100), units = \"secs\"), trans = trans_min) #> scale_x_continuous(trans = trans_min) if (require(\"hms\")) { # transform_hms always assumes seconds hms <- round(runif(10) * 86400) t <- transform_hms() t$transform(hms) t$inverse(t$transform(hms)) t$breaks(hms) # The break labels also follow the hms format demo_timespan(hms, trans = t) } #> Loading required package: hms #> scale_x_continuous(trans = t)"},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":null,"dir":"Reference","previous_headings":"","what":"Yeo-Johnson transformation — transform_yj","title":"Yeo-Johnson transformation — transform_yj","text":"Yeo-Johnson transformation flexible transformation similar Box-Cox, transform_boxcox(), require input values greater zero.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Yeo-Johnson transformation — transform_yj","text":"","code":"transform_yj(p) yj_trans(p)"},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Yeo-Johnson transformation — transform_yj","text":"p Transformation exponent, \\(\\lambda\\).","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Yeo-Johnson transformation — transform_yj","text":"transformation takes one four forms depending values y \\(\\lambda\\). \\(y \\ge 0\\) \\(\\lambda \\neq 0\\) : \\(y^{(\\lambda)} = \\frac{(y + 1)^\\lambda - 1}{\\lambda}\\) \\(y \\ge 0\\) \\(\\lambda = 0\\): \\(y^{(\\lambda)} = \\ln(y + 1)\\) \\(y < 0\\) \\(\\lambda \\neq 2\\): \\(y^{(\\lambda)} = -\\frac{(-y + 1)^{(2 - \\lambda)} - 1}{2 - \\lambda}\\) \\(y < 0\\) \\(\\lambda = 2\\): \\(y^{(\\lambda)} = -\\ln(-y + 1)\\)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Yeo-Johnson transformation — transform_yj","text":"Yeo, ., & Johnson, R. (2000). New Family Power Transformations Improve Normality Symmetry. Biometrika, 87(4), 954-959. https://www.jstor.org/stable/2673623","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Yeo-Johnson transformation — transform_yj","text":"","code":"plot(transform_yj(-1), xlim = c(-10, 10)) plot(transform_yj(0), xlim = c(-10, 10)) plot(transform_yj(1), xlim = c(-10, 10)) plot(transform_yj(2), xlim = c(-10, 10))"},{"path":"https://scales.r-lib.org/dev/reference/trim_to_domain.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute range of transformed values — trim_to_domain","title":"Compute range of transformed values — trim_to_domain","text":"Silently drops ranges outside domain transform.","code":""},{"path":"https://scales.r-lib.org/dev/reference/trim_to_domain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute range of transformed values — trim_to_domain","text":"","code":"trim_to_domain(transform, x) trans_range(transform, x)"},{"path":"https://scales.r-lib.org/dev/reference/trim_to_domain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute range of transformed values — trim_to_domain","text":"transform transformation object, name transformation object given string. x numeric vector compute range ","code":""},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Unit labels — unit_format","title":"Unit labels — unit_format","text":"function kept backward compatiblity; either use label_number() label_number_si() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unit labels — unit_format","text":"","code":"unit_format( accuracy = NULL, scale = 1, prefix = \"\", unit = \"m\", sep = \" \", suffix = paste0(sep, unit), big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unit labels — unit_format","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). unit units append. sep separator number unit label. suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Unit labels — unit_format","text":"","code":"# Label with units demo_continuous(c(0, 1), labels = unit_format(unit = \"m\")) #> scale_x_continuous(labels = unit_format(unit = \"m\")) # Labels in kg, but original data in g km <- unit_format(unit = \"km\", scale = 1e-3, digits = 2) demo_continuous(c(0, 2500), labels = km) #> scale_x_continuous(labels = km)"},{"path":"https://scales.r-lib.org/dev/reference/wrap_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_wrap() — wrap_format","title":"Superseded interface to label_wrap() — wrap_format","text":"functions kept backward compatibility; switch label_wrap() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/wrap_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_wrap() — wrap_format","text":"","code":"wrap_format(width)"},{"path":"https://scales.r-lib.org/dev/reference/wrap_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_wrap() — wrap_format","text":"width Number characters per line.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"machine epsilon difference 1.0 next number can represented machine. default, function uses epsilon * 1000 tolerance. First scales values mean 1, checks difference larger tolerance.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"","code":"zero_range(x, tol = 1000 * .Machine$double.eps)"},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"x numeric range: vector length 2 tol value specifying tolerance.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"logical TRUE relative difference endpoints range distinguishable 0.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"","code":"eps <- .Machine$double.eps zero_range(c(1, 1 + eps)) #> [1] TRUE zero_range(c(1, 1 + 99 * eps)) #> [1] TRUE zero_range(c(1, 1 + 1001 * eps)) #> [1] FALSE zero_range(c(1, 1 + 2 * eps), tol = eps) #> [1] FALSE # Scaling up or down all the values has no effect since the values # are rescaled to 1 before checking against tol zero_range(100000 * c(1, 1 + eps)) #> [1] TRUE zero_range(100000 * c(1, 1 + 1001 * eps)) #> [1] FALSE zero_range(.00001 * c(1, 1 + eps)) #> [1] TRUE zero_range(.00001 * c(1, 1 + 1001 * eps)) #> [1] FALSE # NA values zero_range(c(1, NA)) # NA #> [1] NA zero_range(c(1, NaN)) # NA #> [1] NA # Infinite values zero_range(c(1, Inf)) # FALSE #> [1] FALSE zero_range(c(-Inf, Inf)) # FALSE #> [1] FALSE zero_range(c(Inf, Inf)) # TRUE #> [1] TRUE"},{"path":[]},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"better-type-support-development-version","dir":"Changelog","previous_headings":"","what":"Better type support","title":"scales (development version)","text":"rescale((x), ...) rescale_mid((x), ...) return (x) unaltered (@teunbrand, #403). Add rescale method difftime objects (#382) Add better support difftime objects. label_timespan() adds functionality adding correct unit suffix timespan data, breaks_timespan() adds functionality finding pleasant breakpoints across various bases time units, transform_timespan() wraps together provides alternative transform_hms() (#212)","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"ranges-development-version","dir":"Changelog","previous_headings":"","what":"Ranges","title":"scales (development version)","text":"train_continuous() coerces new numeric calculating range (@teunbrand, #369). Training factor data longer sorts range multiple training passes new fct argument train_discrete() used (#383) DiscreteRange class now keeps track whether trained factor data. Attempt make sort behavior range consistent character vectors training. Mixing character factor data make factor level order take precedence matter training starts charactor vector","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"transformations-development-version","dir":"Changelog","previous_headings":"","what":"Transformations","title":"scales (development version)","text":"Transformation function renamed transform_*-prefixed names instead *_trans-suffixed names. allows better tab-completion search transformations. S3 class transformations renamed \"trans\" \"transform\". new_transform() replaces trans_new() trim_to_domain() replaces trans_range(). old functions kept posterity. transform_sqrt() longer returns inverse values outside domain (#214) Add inverse (area) hyperbolic sine transformation transform_asinh(), provides logarithm-like transformation space, accommodates negative values (#297) Correct domain calculation transform_compose() (@mjskay, #408). Transformation objects can optionally include derivatives transform inverse transform (@mjskay, #322).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"misc-development-version","dir":"Changelog","previous_headings":"","what":"Misc","title":"scales (development version)","text":"scale_cut argument number() now works advertised values lowest cut value (#346) scale_cut now choose appropriate cut case first cut creating irrational-ish number. Added new option style_positive argument label_*() functions. Setting \"space\" add figure space front number make easier align positive negative values figure space takes amount space - (#366) label_dollar() superseeded label_currency() clarity (#344) Palette functions now pal_-prefix. old _pal-suffixed versions kept backward compatibility.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-121","dir":"Changelog","previous_headings":"","what":"scales 1.2.1","title":"scales 1.2.1","text":"CRAN release: 2022-08-19 Re-document fix HTML issues .Rd.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-120","dir":"Changelog","previous_headings":"","what":"scales 1.2.0","title":"scales 1.2.0","text":"CRAN release: 2022-04-13","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"new-features-1-2-0","dir":"Changelog","previous_headings":"","what":"New features","title":"scales 1.2.0","text":"label_number(): New style_positive style_negative argument control positive negative numbers styled (#249, #262). prefix comes negative sign, rather , yielding (e.g) correct -$1 instead $-1. New scale_cut argument enables independent scaling different parts range. useful label_dollar() support scaling large numbers suffix (e.g. “M” million, “B” billion). can used cut_short_scale() billion = thousand million cut_long_scale() billion = million million (initial implementation provided @davidchall). Additionally, accuracy now computed per scale category, rescaled values can different numbers decimal places (#339). label_number_si() deprecated previously used short scale abbreviations instead correct SI prefixes. can mimic previous results label_number(scale_cut = cut_scale_short()) get real SI labels label_number(scale_cut = cut_SI(\"m\")) (#339, help @davidchall). label_bytes() now correctly accounts scale argument choosing auto units (@davidchall, #235). label_date() label_time() gain locale argument allows set locale used generate day month names (#309). New label_log() displays base superscript exponent, use logarithmic axes (@davidchall, #312). New compose_trans() allows arbitrary composition transformers. mostly easily achieved passing character vector whenever might previously passed name single transformer. example, scale_y_continuous(trans = c(\"log10\", \"reverse\")) create reverse log-10 scale (#287).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"bug-fixes-and-minor-improvements-1-2-0","dir":"Changelog","previous_headings":"","what":"Bug fixes and minor improvements","title":"scales 1.2.0","text":"breaks_width() now supports units like \"3 months\" offset argument. col_quantile() longer errors data sufficiently skewed can’t generate requested number unique colours (#294). dollar(negative_parens) deprecated favour style_negative = \"parens\". hue_pal() respects h.start (#288). label_number_auto() correctly formats single numbers greater 1e+06 without error (@karawoo, #321) manual_pal() now always returns unnamed colour vector, easy use ggplot2::discrete_scale() (@yutannihilation, #284). time_trans() date_trans() domains correct type can transformed without error (#298). Internal precision(), used accuracy = NULL, now avoids displaying unnecessary digits (@davidchall, #304).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-111","dir":"Changelog","previous_headings":"","what":"scales 1.1.1","title":"scales 1.1.1","text":"CRAN release: 2020-05-11 breaks_width() now handles difftime/hms objects (@bhogan-mitre, #244). hue_pal() now correctly inverts color palettes direction = -1 (@dpseidel, #252). Internal precision(), used accuracy = NULL, now better job duplicate values present (@teunbrand, #251). also better job ’s mix finite non-finite values (#257). New oob_keep() keep data outside range, allowing zoom-limits oob_keep used oob argument scales. Existing bounds functions renamed oob_-prefix indicate role (@teunbrand, #255). ordinal_french() gains plural gender arguments (@stephLH, #256).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-110","dir":"Changelog","previous_headings":"","what":"scales 1.1.0","title":"scales 1.1.0","text":"CRAN release: 2019-11-18 Axis breaks labels new naming scheme: functions generate breaks limits called breaks_; functions generate labels breaks called labels_ (#226). breaks labels examples overhauled use new demo_continuous(), demo_discrete(), demo_log10(), can see use scales functions ggplot2.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"labels-1-1-0","dir":"Changelog","previous_headings":"","what":"Labels","title":"scales 1.1.0","text":"label functions preserve names (#202) keep NAs NAs instead trying convert \"NA\" (@clauswilke, #187). New label_bytes() replaces number_bytes_format() convenient interface. takes single unit argument can either SI unit (e.g. “kB”), binary unit (e.g. “kIB”), automatic unit (either “auto_si” “auto_binary”). always uses “B” symbol bytes (#174), checks units valid. Additionally, auto units now used determine symbol separately value (@mikmart): New label_date_short() creates labels date axis show components date changed since previous label. example, Jan 10, Jan 20, Jan 30, Feb 1, label_date_short() use labels Jan 10, 20, 30, Feb 1 (#209). label_dollar() now correctly formats negative numbers (e.g.) -$200 (#216). label_math() now returns expression vector, doesn’t coerce inputs names. label_number() takes scale account computing accuracy, supplied. means label_percent() better default accuracy many cases (#192). label_number() now picks accuracy automatically default. underlying heuristic improved use distance adjacent breaks (rather total range break). New label_number_auto() automatically picks number_format() scientific_format() based range input. produce nice output wide range inputs (@paleolimbot, #208). New label_number_si() formats numeric vectors limited SI units. Individual values scaled labelled abbreviations “K”, “M”, “B”, “T” dependent magnitude (@dpseidel, #83). label_parse() now generates expression object can used display formatted labels ggplot2 (@agila5, #203). label_pvalue() now reports values close 1 (determined accuracy) (e.g.) “>0.99”. can control prefixes used new prefix argument (#213).","code":"label_bytes(\"auto_binary\")(1024^(1:3)) #> [1] \"1 kiB\" \"1 MiB\" \"1 GiB\""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"breaks-1-1-0","dir":"Changelog","previous_headings":"","what":"Breaks","title":"scales 1.1.0","text":"built breaks functions now returns function takes range desired number breaks, making possible overwrite defaults number desired breaks given constructor call (@thomasp85). breaks_log() nicer behaviour finite inputs (#210). also provides usable breaks even small ranges (@billdenney, #168) New breaks_width() allows specify fixed distance breaks (along optional offset).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"transformations-1-1-0","dir":"Changelog","previous_headings":"","what":"Transformations","title":"scales 1.1.0","text":"New yj_trans() implements Yeo-Johnson transformation (@zamorarr, #196) trans objects gets methods plot() lines(), numeric transformations get example showing transformation. boxcox_trans() longer throws error given NA values (@sflippl, #181).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"other-bug-fixes-and-minor-improvements-1-1-0","dir":"Changelog","previous_headings":"","what":"Other bug fixes and minor improvements","title":"scales 1.1.0","text":"scales now uses farver package colour manipulation instead combination grDevices hand-rolled C++ code (#223). alpha() now preserves element names (@wibeasley, #195) ContinuousRange DiscreteRange methods now properly inherit fully mutable (@dpseidel). col_numeric(), col_bin(), col_quantile(), col_factor() now support viridis colors. Just pass palette name (\"magma\", \"inferno\", \"plasma\", \"viridis\") palette argument (@jcheng5, #191). col_numeric(), col_bin(), col_quantile(), col_factor() now reverse parameter, apply color palettes opposite usual order (.e. high--low instead low--high) (@jcheng5, #191). col_bin() col_quantile() now take right argument, passed base::cut(); indicates whether bin/quantile intervals closed right (open left), vice versa (@jcheng5, #191). col_factor() now tries avoid interpolating qualitative RColorBrewer palettes. Instead, attempts assign palette color factor level. Interpolation still used factor levels available colors, warning emitted case (@jcheng5, #191). dichromat_pal() documentation now builds without requiring suggested dichromat package installed (@dpseidel, #172). date_breaks() now supports subsecond intervals (@dpseidel, #85).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-100","dir":"Changelog","previous_headings":"","what":"scales 1.0.0","title":"scales 1.0.0","text":"CRAN release: 2018-08-09","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"formatters-1-0-0","dir":"Changelog","previous_headings":"New Features","what":"Formatters","title":"scales 1.0.0","text":"comma_format(), percent_format() unit_format() gain new arguments: accuracy, scale, prefix, suffix, decimal.mark, big.mark (@larmarange, #146). dollar_format() gains new arguments: accuracy, scale, decimal.mark, trim (@larmarange, #148). New number_bytes_format() number_bytes() format numeric vectors byte measurements (@hrbrmstr, @dpseidel). New number_format() provides generic formatter numbers (@larmarange, #142). New pvalue_format() formats p-values (@larmarange, #145). ordinal_format() gains new arguments: prefix, suffix, big.mark, rules; rules French Spanish also provided (@larmarange, #149). scientific_format() gains new arguments: scale, prefix, suffix, decimal.mark, trim (@larmarange, #147). New time_format() formats POSIXt hms objects (@dpseidel, #88).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"transformations--breaks-1-0-0","dir":"Changelog","previous_headings":"New Features","what":"Transformations & breaks","title":"scales 1.0.0","text":"boxcox_trans() now invertible x >= 0 requires positive values. new argument offset allows specification type-1 type-2 Box-Cox transformations (@dpseidel, #103). log_breaks() returns integer multiples integer powers base finer breaks needed (@ThierryO, #117). New function modulus_trans() implements modulus transformation positive negative values (@dpseidel). New pseudo_log_trans() transforming numerics signed logarithmic scale smooth transition linear scale around 0 (@lepennec, #106).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"minor-bug-fixes-and-improvements-1-0-0","dir":"Changelog","previous_headings":"","what":"Minor bug fixes and improvements","title":"scales 1.0.0","text":"scales functions now work expected used inside loop. previous package versions scales function used variable custom parameters inside loop, parameters evaluated end loop, due R lazy evaluation works (@zeehio, #81). colour_ramp() now uses alpha = TRUE default (@clauswilke, #108). date_breaks() now supports subsecond intervals (@dpseidel, #85). Removes dichromat plyr dependencies. dichromat now suggested (@dpseidel, #118). expand_range() arguments mul add now affect scales range 0 (@dpseidel, ggplot2-2281). extended_breaks() now allows user specification labeling::extended() argument .loose permit flexible breaks specification (@dpseidel, #99). New rescale() rescale_mid() methods support dist objects (@zeehio, #105). rescale_mid() now properly handles NAs (@foo-bar-baz-qux, #104).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-050","dir":"Changelog","previous_headings":"","what":"scales 0.5.0","title":"scales 0.5.0","text":"CRAN release: 2017-08-24 New function regular_minor_breaks() calculates minor breaks property transformation (@karawoo). Adds viridis_pal() creating palettes color maps viridisLite package (@karawoo). Switched reference classes R6 (#96). rescale() rescale_mid() now S3 generics, work numeric, Date, POSIXct, POSIXlt bit64::integer64 objects (@zeehio, #74).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-041","dir":"Changelog","previous_headings":"","what":"scales 0.4.1","title":"scales 0.4.1","text":"CRAN release: 2016-11-09 extended_breaks() longer fails pathological inputs. New hms_trans() transforming hms time vectors. train_discrete() gets new na.rm argument controls whether NAs preserved dropped.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-040","dir":"Changelog","previous_headings":"","what":"scales 0.4.0","title":"scales 0.4.0","text":"CRAN release: 2016-02-26 Switched NEWS NEWS.md. manual_pal() produces warning n greater number values palette (@jrnold, #68). precision(0) now returns 1, means percent(0) now returns 0% (#50). scale_continuous() uses correct check numeric values. NaN correctly recognised missing value gradient palettes (ggplot2-1482).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-030","dir":"Changelog","previous_headings":"","what":"scales 0.3.0","title":"scales 0.3.0","text":"CRAN release: 2015-08-25 rescale() preserves missing values input range x (effectively) 0 (ggplot2-985). Continuous colour palettes now use colour_ramp() instead colorRamp(). supports interpolation Lab colour space, hundreds times faster.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-025","dir":"Changelog","previous_headings":"","what":"scales 0.2.5","title":"scales 0.2.5","text":"CRAN release: 2015-06-12","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"improved-formatting-functions-0-2-5","dir":"Changelog","previous_headings":"","what":"Improved formatting functions","title":"scales 0.2.5","text":"date_format() gains option specify time zone (#51). dollar_format() now flexible can add either prefixes suffixes different currencies (#53). gains negative_parens argument show negative values ($100) now passes missing values unchanged (@dougmitarotonda, #40). New ordinal_format() generates ordinal numbers (1st, 2nd, etc) (@aaronwolen, #55). New unit_format() makes easier add units labels, optionally scaling (@ThierryO, #46). New wrap_format() function wrap character vectors desired width. (@jimhester, #37).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"new-colour-scaling-functions-0-2-5","dir":"Changelog","previous_headings":"","what":"New colour scaling functions","title":"scales 0.2.5","text":"New color scaling functions col_numeric(), col_bin(), col_quantile(), col_factor(). functions provide concise ways map continuous categorical values color spectra. New colour_ramp() function performing color interpolation CIELAB color space (like grDevices::colorRamp(space = 'Lab'), much faster).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"other-bug-fixes-and-minor-improvements-0-2-5","dir":"Changelog","previous_headings":"","what":"Other bug fixes and minor improvements","title":"scales 0.2.5","text":"boxcox_trans() returns correct value p close zero (#31). dollar() percent() correctly return zero length string zero length input (@BrianDiggs, #35). brewer_pal() gains direction argument easily invert order colours (@jiho, #36). show_col() additional options showcase colors better (@jiho, #52). Relaxed tolerance zero_range() .Machine$double.eps * 1000 (#33).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-024","dir":"Changelog","previous_headings":"","what":"scales 0.2.4","title":"scales 0.2.4","text":"CRAN release: 2014-04-22 Eliminate stringr dependency. Fix outstanding errors R CMD check.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-023","dir":"Changelog","previous_headings":"","what":"scales 0.2.3","title":"scales 0.2.3","text":"CRAN release: 2012-12-05 floor_time() calls to_time(), function moved function longer available scales namespace. Now floor_time() copy function (Thanks Stefan Novak). Color palettes generated brewer_pal() longer give warnings fewer 3 colors requested (@wch). abs_area() rescale_max() functions added, scaling area points proportional value. used scale_size_area() ggplot2.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-022","dir":"Changelog","previous_headings":"","what":"scales 0.2.2","title":"scales 0.2.2","text":"CRAN release: 2012-09-04 zero_range() improved behaviour thanks Brian Diggs. brewer_pal() complains give incorrect palette type. (Fixes #15, thanks Jean-Olivier Irisson). shape_pal() warns asked 6 values. (Fixes #16, thanks Jean-Olivier Irisson). time_trans() gains optional argument tz specify time zone use times. specified, guess first input non-null time zone. date_trans() time_trans() now check inputs correct type. prevents ggplot2 scales silently giving incorrect outputs given incorrect inputs. Change default breaks algorithm cbreaks() trans_new(). Previously pretty_breaks(), now ’s extended_breaks(), uses extended() algorithm labeling package. fixed namespace problem fullseq().","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-021","dir":"Changelog","previous_headings":"","what":"scales 0.2.1","title":"scales 0.2.1","text":"CRAN release: 2012-05-08 suppressWarnings train_continuous() zero-row infinite data frames don’t potentially cause problems. check zero-length colour gradient_n_pal(). added extended_breaks() implements extension Wilkinson’s labelling approach, implemented labeling package. generally produce nicer breaks pretty_breaks(). alpha() can now preserve existing alpha values alpha() missing. log_breaks() always gives breaks evenly spaced log scale, never evenly spaced data scale. result really bad breaks ranges (e.g 0.5-0.6), probably shouldn’t using log scales situation anyway.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-020","dir":"Changelog","previous_headings":"","what":"scales 0.2.0","title":"scales 0.2.0","text":"CRAN release: 2012-02-27 censor() squish() gain .finite argument default operating finite values. needed ggplot2, reflects use Inf -Inf special values. bounds functions now force evaluation range avoid bug S3 method dispatch inside primitive functions (e.g. [). Simplified algorithm discrete_range() robust stringsAsFactors global option. Now, order factor preserved full factor first object seen, subsequent inputs subsets levels original factor. scientific() ensures output always scientific format specified number significant digits. comma() ensures output never scientific format (Fixes #7). Another tweak zero_range() better detect range zero length (Fixes #6).","code":""}] +[{"path":[]},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement codeofconduct@posit.co. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://scales.r-lib.org/dev/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.1, available https://www.contributor-covenant.org/version/2/1/code_of_conduct.html. Community Impact Guidelines inspired [Mozilla’s code conduct enforcement ladder][https://github.com/mozilla/inclusion]. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://scales.r-lib.org/dev/LICENSE.html","id":null,"dir":"","previous_headings":"","what":"MIT License","title":"MIT License","text":"Copyright (c) 2023 scales authors Permission hereby granted, free charge, person obtaining copy software associated documentation files (“Software”), deal Software without restriction, including without limitation rights use, copy, modify, merge, publish, distribute, sublicense, /sell copies Software, permit persons Software furnished , subject following conditions: copyright notice permission notice shall included copies substantial portions Software. SOFTWARE PROVIDED “”, WITHOUT WARRANTY KIND, EXPRESS IMPLIED, INCLUDING LIMITED WARRANTIES MERCHANTABILITY, FITNESS PARTICULAR PURPOSE NONINFRINGEMENT. EVENT SHALL AUTHORS COPYRIGHT HOLDERS LIABLE CLAIM, DAMAGES LIABILITY, WHETHER ACTION CONTRACT, TORT OTHERWISE, ARISING , CONNECTION SOFTWARE USE DEALINGS SOFTWARE.","code":""},{"path":"https://scales.r-lib.org/dev/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Hadley Wickham. Author. Thomas Lin Pedersen. Maintainer, author. Dana Seidel. Author. . Copyright holder, funder.","code":""},{"path":"https://scales.r-lib.org/dev/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Wickham H, Pedersen T, Seidel D (2023). scales: Scale Functions Visualization. R package version 1.2.1.9000, https://github.com/r-lib/scales, https://scales.r-lib.org.","code":"@Manual{, title = {scales: Scale Functions for Visualization}, author = {Hadley Wickham and Thomas Lin Pedersen and Dana Seidel}, year = {2023}, note = {R package version 1.2.1.9000, https://github.com/r-lib/scales}, url = {https://scales.r-lib.org}, }"},{"path":"https://scales.r-lib.org/dev/index.html","id":"scales-","dir":"","previous_headings":"","what":"Scale Functions for Visualization","title":"Scale Functions for Visualization","text":"One difficult parts graphics package scaling, converting data values perceptual properties. inverse scaling, making guides (legends axes) can used read graph, often even harder! scales packages provides internal scaling infrastructure used ggplot2, gives tools override default breaks, labels, transformations palettes.","code":""},{"path":"https://scales.r-lib.org/dev/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Scale Functions for Visualization","text":"","code":"# Scales is installed when you install ggplot2 or the tidyverse. # But you can install just scales from CRAN: install.packages(\"scales\") # Or the development version from Github: # install.packages(\"pak\") pak::pak(\"r-lib/scales\")"},{"path":[]},{"path":"https://scales.r-lib.org/dev/index.html","id":"breaks-and-labels","dir":"","previous_headings":"Usage","what":"Breaks and labels","title":"Scale Functions for Visualization","text":"common use scales package control appearance axis legend labels. Use break_ function control breaks generated limits, label_ function control breaks turned labels. Generally, don’t recommend running library(scales) type (e.g.) scales::label_ autocomplete provide list labelling functions jog memory.","code":"library(ggplot2) library(dplyr, warn.conflicts = FALSE) library(lubridate, warn.conflicts = FALSE) txhousing %>% mutate(date = make_date(year, month, 1)) %>% group_by(city) %>% filter(min(sales) > 5e2) %>% ggplot(aes(date, sales, group = city)) + geom_line(na.rm = TRUE) + scale_x_date( NULL, breaks = scales::breaks_width(\"2 years\"), labels = scales::label_date(\"'%y\") ) + scale_y_log10( \"Total sales\", labels = scales::label_number(scale_cut = scales::cut_short_scale()) ) economics %>% filter(date < ymd(\"1970-01-01\")) %>% ggplot(aes(date, pce)) + geom_line() + scale_x_date(NULL, breaks = scales::breaks_width(\"3 months\"), labels = scales::label_date_short() ) + scale_y_continuous(\"Personal consumption expenditures\", breaks = scales::breaks_extended(8), labels = scales::label_dollar() )"},{"path":"https://scales.r-lib.org/dev/index.html","id":"advanced-features","dir":"","previous_headings":"Usage","what":"Advanced features","title":"Scale Functions for Visualization","text":"Scales colour palettes used power scales ggplot2, can use plotting system. following example shows might apply base plot. scales also gives users ability define apply custom transformation functions repeated use.","code":"library(scales) # pull a list of colours from any palette pal_viridis()(4) #> [1] \"#440154FF\" \"#31688EFF\" \"#35B779FF\" \"#FDE725FF\" # use in combination with baseR `palette()` to set new defaults palette(pal_brewer(palette = \"Set2\")(4)) par(mar = c(5, 5, 1, 1)) plot(Sepal.Length ~ Sepal.Width, data = iris, col = Species, pch = 20) # use new_transform to build a new transformation transform_logp3 <- new_transform( name = \"logp\", transform = function(x) log(x + 3), inverse = function(x) exp(x) - 3, breaks = log_breaks() ) dsamp <- sample_n(diamonds, 100) ggplot(dsamp, aes(carat, price, colour = color)) + geom_point() + scale_y_continuous(trans = transform_logp3)"},{"path":"https://scales.r-lib.org/dev/reference/Range.html","id":null,"dir":"Reference","previous_headings":"","what":"Mutable ranges — Range","title":"Mutable ranges — Range","text":"Mutable ranges two methods (train reset), make possible build complete ranges multiple passes.","code":""},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":null,"dir":"Reference","previous_headings":"","what":"Modify colour transparency — alpha","title":"Modify colour transparency — alpha","text":"Vectorised colour alpha.","code":""},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modify colour transparency — alpha","text":"","code":"alpha(colour, alpha = NA)"},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modify colour transparency — alpha","text":"colour colour alpha new alpha level [0,1]. alpha NA, existing alpha values preserved.","code":""},{"path":"https://scales.r-lib.org/dev/reference/alpha.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Modify colour transparency — alpha","text":"","code":"alpha(\"red\", 0.1) #> [1] \"#FF00001A\" alpha(colours(), 0.5) #> [1] \"#FFFFFF80\" \"#F0F8FF80\" \"#FAEBD780\" \"#FFEFDB80\" \"#EEDFCC80\" #> [6] \"#CDC0B080\" \"#8B837880\" \"#7FFFD480\" \"#7FFFD480\" \"#76EEC680\" #> [11] \"#66CDAA80\" \"#458B7480\" \"#F0FFFF80\" \"#F0FFFF80\" \"#E0EEEE80\" #> [16] \"#C1CDCD80\" \"#838B8B80\" \"#F5F5DC80\" \"#FFE4C480\" \"#FFE4C480\" #> [21] \"#EED5B780\" \"#CDB79E80\" \"#8B7D6B80\" \"#00000080\" \"#FFEBCD80\" #> [26] \"#0000FF80\" \"#0000FF80\" \"#0000EE80\" \"#0000CD80\" \"#00008B80\" #> [31] \"#8A2BE280\" \"#A52A2A80\" \"#FF404080\" \"#EE3B3B80\" \"#CD333380\" #> [36] \"#8B232380\" \"#DEB88780\" \"#FFD39B80\" \"#EEC59180\" \"#CDAA7D80\" #> [41] \"#8B735580\" \"#5F9EA080\" \"#98F5FF80\" \"#8EE5EE80\" \"#7AC5CD80\" #> [46] \"#53868B80\" \"#7FFF0080\" \"#7FFF0080\" \"#76EE0080\" \"#66CD0080\" #> [51] \"#458B0080\" \"#D2691E80\" \"#FF7F2480\" \"#EE762180\" \"#CD661D80\" #> [56] \"#8B451380\" \"#FF7F5080\" \"#FF725680\" \"#EE6A5080\" \"#CD5B4580\" #> [61] \"#8B3E2F80\" \"#6495ED80\" \"#FFF8DC80\" \"#FFF8DC80\" \"#EEE8CD80\" #> [66] \"#CDC8B180\" \"#8B887880\" \"#00FFFF80\" \"#00FFFF80\" \"#00EEEE80\" #> [71] \"#00CDCD80\" \"#008B8B80\" \"#00008B80\" \"#008B8B80\" \"#B8860B80\" #> [76] \"#FFB90F80\" \"#EEAD0E80\" \"#CD950C80\" \"#8B650880\" \"#A9A9A980\" #> [81] \"#00640080\" \"#A9A9A980\" \"#BDB76B80\" \"#8B008B80\" \"#556B2F80\" #> [86] \"#CAFF7080\" \"#BCEE6880\" \"#A2CD5A80\" \"#6E8B3D80\" \"#FF8C0080\" #> [91] \"#FF7F0080\" \"#EE760080\" \"#CD660080\" \"#8B450080\" \"#9932CC80\" #> [96] \"#BF3EFF80\" \"#B23AEE80\" \"#9A32CD80\" \"#68228B80\" \"#8B000080\" #> [101] \"#E9967A80\" \"#8FBC8F80\" \"#C1FFC180\" \"#B4EEB480\" \"#9BCD9B80\" #> [106] \"#698B6980\" \"#483D8B80\" \"#2F4F4F80\" \"#97FFFF80\" \"#8DEEEE80\" #> [111] \"#79CDCD80\" \"#528B8B80\" \"#2F4F4F80\" \"#00CED180\" \"#9400D380\" #> [116] \"#FF149380\" \"#FF149380\" \"#EE128980\" \"#CD107680\" \"#8B0A5080\" #> [121] \"#00BFFF80\" \"#00BFFF80\" \"#00B2EE80\" \"#009ACD80\" \"#00688B80\" #> [126] \"#69696980\" \"#69696980\" \"#1E90FF80\" \"#1E90FF80\" \"#1C86EE80\" #> [131] \"#1874CD80\" \"#104E8B80\" \"#B2222280\" \"#FF303080\" \"#EE2C2C80\" #> [136] \"#CD262680\" \"#8B1A1A80\" \"#FFFAF080\" \"#228B2280\" \"#DCDCDC80\" #> [141] \"#F8F8FF80\" \"#FFD70080\" \"#FFD70080\" \"#EEC90080\" \"#CDAD0080\" #> [146] \"#8B750080\" \"#DAA52080\" \"#FFC12580\" \"#EEB42280\" \"#CD9B1D80\" #> [151] \"#8B691480\" \"#BEBEBE80\" \"#00000080\" \"#03030380\" \"#05050580\" #> [156] \"#08080880\" \"#0A0A0A80\" \"#0D0D0D80\" \"#0F0F0F80\" \"#12121280\" #> [161] \"#14141480\" \"#17171780\" \"#1A1A1A80\" \"#1C1C1C80\" \"#1F1F1F80\" #> [166] \"#21212180\" \"#24242480\" \"#26262680\" \"#29292980\" \"#2B2B2B80\" #> [171] \"#2E2E2E80\" \"#30303080\" \"#33333380\" \"#36363680\" \"#38383880\" #> [176] \"#3B3B3B80\" \"#3D3D3D80\" \"#40404080\" \"#42424280\" \"#45454580\" #> [181] \"#47474780\" \"#4A4A4A80\" \"#4D4D4D80\" \"#4F4F4F80\" \"#52525280\" #> [186] \"#54545480\" \"#57575780\" \"#59595980\" \"#5C5C5C80\" \"#5E5E5E80\" #> [191] \"#61616180\" \"#63636380\" \"#66666680\" \"#69696980\" \"#6B6B6B80\" #> [196] \"#6E6E6E80\" \"#70707080\" \"#73737380\" \"#75757580\" \"#78787880\" #> [201] \"#7A7A7A80\" \"#7D7D7D80\" \"#7F7F7F80\" \"#82828280\" \"#85858580\" #> [206] \"#87878780\" \"#8A8A8A80\" \"#8C8C8C80\" \"#8F8F8F80\" \"#91919180\" #> [211] \"#94949480\" \"#96969680\" \"#99999980\" \"#9C9C9C80\" \"#9E9E9E80\" #> [216] \"#A1A1A180\" \"#A3A3A380\" \"#A6A6A680\" \"#A8A8A880\" \"#ABABAB80\" #> [221] \"#ADADAD80\" \"#B0B0B080\" \"#B3B3B380\" \"#B5B5B580\" \"#B8B8B880\" #> [226] \"#BABABA80\" \"#BDBDBD80\" \"#BFBFBF80\" \"#C2C2C280\" \"#C4C4C480\" #> [231] \"#C7C7C780\" \"#C9C9C980\" \"#CCCCCC80\" \"#CFCFCF80\" \"#D1D1D180\" #> [236] \"#D4D4D480\" \"#D6D6D680\" \"#D9D9D980\" \"#DBDBDB80\" \"#DEDEDE80\" #> [241] \"#E0E0E080\" \"#E3E3E380\" \"#E5E5E580\" \"#E8E8E880\" \"#EBEBEB80\" #> [246] \"#EDEDED80\" \"#F0F0F080\" \"#F2F2F280\" \"#F5F5F580\" \"#F7F7F780\" #> [251] \"#FAFAFA80\" \"#FCFCFC80\" \"#FFFFFF80\" \"#00FF0080\" \"#00FF0080\" #> [256] \"#00EE0080\" \"#00CD0080\" \"#008B0080\" \"#ADFF2F80\" \"#BEBEBE80\" #> [261] \"#00000080\" \"#03030380\" \"#05050580\" \"#08080880\" \"#0A0A0A80\" #> [266] \"#0D0D0D80\" \"#0F0F0F80\" \"#12121280\" \"#14141480\" \"#17171780\" #> [271] \"#1A1A1A80\" \"#1C1C1C80\" \"#1F1F1F80\" \"#21212180\" \"#24242480\" #> [276] \"#26262680\" \"#29292980\" \"#2B2B2B80\" \"#2E2E2E80\" \"#30303080\" #> [281] \"#33333380\" \"#36363680\" \"#38383880\" \"#3B3B3B80\" \"#3D3D3D80\" #> [286] \"#40404080\" \"#42424280\" \"#45454580\" \"#47474780\" \"#4A4A4A80\" #> [291] \"#4D4D4D80\" \"#4F4F4F80\" \"#52525280\" \"#54545480\" \"#57575780\" #> [296] \"#59595980\" \"#5C5C5C80\" \"#5E5E5E80\" \"#61616180\" \"#63636380\" #> [301] \"#66666680\" \"#69696980\" \"#6B6B6B80\" \"#6E6E6E80\" \"#70707080\" #> [306] \"#73737380\" \"#75757580\" \"#78787880\" \"#7A7A7A80\" \"#7D7D7D80\" #> [311] \"#7F7F7F80\" \"#82828280\" \"#85858580\" \"#87878780\" \"#8A8A8A80\" #> [316] \"#8C8C8C80\" \"#8F8F8F80\" \"#91919180\" \"#94949480\" \"#96969680\" #> [321] \"#99999980\" \"#9C9C9C80\" \"#9E9E9E80\" \"#A1A1A180\" \"#A3A3A380\" #> [326] \"#A6A6A680\" \"#A8A8A880\" \"#ABABAB80\" \"#ADADAD80\" \"#B0B0B080\" #> [331] \"#B3B3B380\" \"#B5B5B580\" \"#B8B8B880\" \"#BABABA80\" \"#BDBDBD80\" #> [336] \"#BFBFBF80\" \"#C2C2C280\" \"#C4C4C480\" \"#C7C7C780\" \"#C9C9C980\" #> [341] \"#CCCCCC80\" \"#CFCFCF80\" \"#D1D1D180\" \"#D4D4D480\" \"#D6D6D680\" #> [346] \"#D9D9D980\" \"#DBDBDB80\" \"#DEDEDE80\" \"#E0E0E080\" \"#E3E3E380\" #> [351] \"#E5E5E580\" \"#E8E8E880\" \"#EBEBEB80\" \"#EDEDED80\" \"#F0F0F080\" #> [356] \"#F2F2F280\" \"#F5F5F580\" \"#F7F7F780\" \"#FAFAFA80\" \"#FCFCFC80\" #> [361] \"#FFFFFF80\" \"#F0FFF080\" \"#F0FFF080\" \"#E0EEE080\" \"#C1CDC180\" #> [366] \"#838B8380\" \"#FF69B480\" \"#FF6EB480\" \"#EE6AA780\" \"#CD609080\" #> [371] \"#8B3A6280\" \"#CD5C5C80\" \"#FF6A6A80\" \"#EE636380\" \"#CD555580\" #> [376] \"#8B3A3A80\" \"#FFFFF080\" \"#FFFFF080\" \"#EEEEE080\" \"#CDCDC180\" #> [381] \"#8B8B8380\" \"#F0E68C80\" \"#FFF68F80\" \"#EEE68580\" \"#CDC67380\" #> [386] \"#8B864E80\" \"#E6E6FA80\" \"#FFF0F580\" \"#FFF0F580\" \"#EEE0E580\" #> [391] \"#CDC1C580\" \"#8B838680\" \"#7CFC0080\" \"#FFFACD80\" \"#FFFACD80\" #> [396] \"#EEE9BF80\" \"#CDC9A580\" \"#8B897080\" \"#ADD8E680\" \"#BFEFFF80\" #> [401] \"#B2DFEE80\" \"#9AC0CD80\" \"#68838B80\" \"#F0808080\" \"#E0FFFF80\" #> [406] \"#E0FFFF80\" \"#D1EEEE80\" \"#B4CDCD80\" \"#7A8B8B80\" \"#EEDD8280\" #> [411] \"#FFEC8B80\" \"#EEDC8280\" \"#CDBE7080\" \"#8B814C80\" \"#FAFAD280\" #> [416] \"#D3D3D380\" \"#90EE9080\" \"#D3D3D380\" \"#FFB6C180\" \"#FFAEB980\" #> [421] \"#EEA2AD80\" \"#CD8C9580\" \"#8B5F6580\" \"#FFA07A80\" \"#FFA07A80\" #> [426] \"#EE957280\" \"#CD816280\" \"#8B574280\" \"#20B2AA80\" \"#87CEFA80\" #> [431] \"#B0E2FF80\" \"#A4D3EE80\" \"#8DB6CD80\" \"#607B8B80\" \"#8470FF80\" #> [436] \"#77889980\" \"#77889980\" \"#B0C4DE80\" \"#CAE1FF80\" \"#BCD2EE80\" #> [441] \"#A2B5CD80\" \"#6E7B8B80\" \"#FFFFE080\" \"#FFFFE080\" \"#EEEED180\" #> [446] \"#CDCDB480\" \"#8B8B7A80\" \"#32CD3280\" \"#FAF0E680\" \"#FF00FF80\" #> [451] \"#FF00FF80\" \"#EE00EE80\" \"#CD00CD80\" \"#8B008B80\" \"#B0306080\" #> [456] \"#FF34B380\" \"#EE30A780\" \"#CD299080\" \"#8B1C6280\" \"#66CDAA80\" #> [461] \"#0000CD80\" \"#BA55D380\" \"#E066FF80\" \"#D15FEE80\" \"#B452CD80\" #> [466] \"#7A378B80\" \"#9370DB80\" \"#AB82FF80\" \"#9F79EE80\" \"#8968CD80\" #> [471] \"#5D478B80\" \"#3CB37180\" \"#7B68EE80\" \"#00FA9A80\" \"#48D1CC80\" #> [476] \"#C7158580\" \"#19197080\" \"#F5FFFA80\" \"#FFE4E180\" \"#FFE4E180\" #> [481] \"#EED5D280\" \"#CDB7B580\" \"#8B7D7B80\" \"#FFE4B580\" \"#FFDEAD80\" #> [486] \"#FFDEAD80\" \"#EECFA180\" \"#CDB38B80\" \"#8B795E80\" \"#00008080\" #> [491] \"#00008080\" \"#FDF5E680\" \"#6B8E2380\" \"#C0FF3E80\" \"#B3EE3A80\" #> [496] \"#9ACD3280\" \"#698B2280\" \"#FFA50080\" \"#FFA50080\" \"#EE9A0080\" #> [501] \"#CD850080\" \"#8B5A0080\" \"#FF450080\" \"#FF450080\" \"#EE400080\" #> [506] \"#CD370080\" \"#8B250080\" \"#DA70D680\" \"#FF83FA80\" \"#EE7AE980\" #> [511] \"#CD69C980\" \"#8B478980\" \"#EEE8AA80\" \"#98FB9880\" \"#9AFF9A80\" #> [516] \"#90EE9080\" \"#7CCD7C80\" \"#548B5480\" \"#AFEEEE80\" \"#BBFFFF80\" #> [521] \"#AEEEEE80\" \"#96CDCD80\" \"#668B8B80\" \"#DB709380\" \"#FF82AB80\" #> [526] \"#EE799F80\" \"#CD688980\" \"#8B475D80\" \"#FFEFD580\" \"#FFDAB980\" #> [531] \"#FFDAB980\" \"#EECBAD80\" \"#CDAF9580\" \"#8B776580\" \"#CD853F80\" #> [536] \"#FFC0CB80\" \"#FFB5C580\" \"#EEA9B880\" \"#CD919E80\" \"#8B636C80\" #> [541] \"#DDA0DD80\" \"#FFBBFF80\" \"#EEAEEE80\" \"#CD96CD80\" \"#8B668B80\" #> [546] \"#B0E0E680\" \"#A020F080\" \"#9B30FF80\" \"#912CEE80\" \"#7D26CD80\" #> [551] \"#551A8B80\" \"#FF000080\" \"#FF000080\" \"#EE000080\" \"#CD000080\" #> [556] \"#8B000080\" \"#BC8F8F80\" \"#FFC1C180\" \"#EEB4B480\" \"#CD9B9B80\" #> [561] \"#8B696980\" \"#4169E180\" \"#4876FF80\" \"#436EEE80\" \"#3A5FCD80\" #> [566] \"#27408B80\" \"#8B451380\" \"#FA807280\" \"#FF8C6980\" \"#EE826280\" #> [571] \"#CD705480\" \"#8B4C3980\" \"#F4A46080\" \"#2E8B5780\" \"#54FF9F80\" #> [576] \"#4EEE9480\" \"#43CD8080\" \"#2E8B5780\" \"#FFF5EE80\" \"#FFF5EE80\" #> [581] \"#EEE5DE80\" \"#CDC5BF80\" \"#8B868280\" \"#A0522D80\" \"#FF824780\" #> [586] \"#EE794280\" \"#CD683980\" \"#8B472680\" \"#87CEEB80\" \"#87CEFF80\" #> [591] \"#7EC0EE80\" \"#6CA6CD80\" \"#4A708B80\" \"#6A5ACD80\" \"#836FFF80\" #> [596] \"#7A67EE80\" \"#6959CD80\" \"#473C8B80\" \"#70809080\" \"#C6E2FF80\" #> [601] \"#B9D3EE80\" \"#9FB6CD80\" \"#6C7B8B80\" \"#70809080\" \"#FFFAFA80\" #> [606] \"#FFFAFA80\" \"#EEE9E980\" \"#CDC9C980\" \"#8B898980\" \"#00FF7F80\" #> [611] \"#00FF7F80\" \"#00EE7680\" \"#00CD6680\" \"#008B4580\" \"#4682B480\" #> [616] \"#63B8FF80\" \"#5CACEE80\" \"#4F94CD80\" \"#36648B80\" \"#D2B48C80\" #> [621] \"#FFA54F80\" \"#EE9A4980\" \"#CD853F80\" \"#8B5A2B80\" \"#D8BFD880\" #> [626] \"#FFE1FF80\" \"#EED2EE80\" \"#CDB5CD80\" \"#8B7B8B80\" \"#FF634780\" #> [631] \"#FF634780\" \"#EE5C4280\" \"#CD4F3980\" \"#8B362680\" \"#40E0D080\" #> [636] \"#00F5FF80\" \"#00E5EE80\" \"#00C5CD80\" \"#00868B80\" \"#EE82EE80\" #> [641] \"#D0209080\" \"#FF3E9680\" \"#EE3A8C80\" \"#CD327880\" \"#8B225280\" #> [646] \"#F5DEB380\" \"#FFE7BA80\" \"#EED8AE80\" \"#CDBA9680\" \"#8B7E6680\" #> [651] \"#F5F5F580\" \"#FFFF0080\" \"#FFFF0080\" \"#EEEE0080\" \"#CDCD0080\" #> [656] \"#8B8B0080\" \"#9ACD3280\" alpha(\"red\", seq(0, 1, length.out = 10)) #> [1] \"#FF000000\" \"#FF00001C\" \"#FF000039\" \"#FF000055\" \"#FF000071\" #> [6] \"#FF00008E\" \"#FF0000AA\" \"#FF0000C6\" \"#FF0000E3\" \"#FF0000\" alpha(c(\"first\" = \"gold\", \"second\" = \"lightgray\", \"third\" = \"#cd7f32\"), .5) #> first second third #> \"#FFD70080\" \"#D3D3D380\" \"#CD7F3280\""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":null,"dir":"Reference","previous_headings":"","what":"Automatic breaks for numeric axes — breaks_extended","title":"Automatic breaks for numeric axes — breaks_extended","text":"Uses Wilkinson's extended breaks algorithm implemented labeling package.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Automatic breaks for numeric axes — breaks_extended","text":"","code":"breaks_extended(n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Automatic breaks for numeric axes — breaks_extended","text":"n Desired number breaks. may get slightly fewer breaks requested. ... arguments passed labeling::extended()","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Automatic breaks for numeric axes — breaks_extended","text":"Talbot, J., Lin, S., Hanrahan, P. (2010) Extension Wilkinson's Algorithm Positioning Tick Labels Axes, InfoVis 2010 http://vis.stanford.edu/files/2010-TickLabels-InfoVis.pdf.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_extended.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Automatic breaks for numeric axes — breaks_extended","text":"","code":"demo_continuous(c(0, 10)) #> scale_x_continuous() demo_continuous(c(0, 10), breaks = breaks_extended(3)) #> scale_x_continuous(breaks = breaks_extended(3)) demo_continuous(c(0, 10), breaks = breaks_extended(10)) #> scale_x_continuous(breaks = breaks_extended(10))"},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":null,"dir":"Reference","previous_headings":"","what":"Breaks for log axes — breaks_log","title":"Breaks for log axes — breaks_log","text":"algorithm starts looking integer powers base. provide enough breaks, looks additional intermediate breaks integer multiples integer powers base. fails (can small ranges), fall back extended_breaks()","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Breaks for log axes — breaks_log","text":"","code":"breaks_log(n = 5, base = 10)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Breaks for log axes — breaks_log","text":"n desired number breaks base base logarithm use","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Breaks for log axes — breaks_log","text":"algorithm starts looking set integer powers base cover range data. generate least n - 2 breaks, look integer 1 base splits interval approximately half. example, case base = 10, integer 3 log10(3) = 0.477. leaves 2 intervals: c(1, 3) c(3, 10). still need breaks, look another integer splits largest remaining interval (log-scale) approximately half. base = 10, 5 log10(5) = 0.699. generic algorithm starts set integers steps containing 1 set candidate integers containing integers larger 1 smaller base. remaining candidate integer x, smallest interval (log-scale) vector sort(c(x, steps, base)) calculated. candidate x yields largest minimal interval added steps removed candidate set. repeated either sufficient number breaks, >= n-2, returned candidates used.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_log.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Breaks for log axes — breaks_log","text":"","code":"demo_log10(c(1, 1e5)) #> scale_x_log10() demo_log10(c(1, 1e6)) #> scale_x_log10() # Request more breaks by setting n demo_log10(c(1, 1e6), breaks = breaks_log(6)) #> scale_x_log10(breaks = breaks_log(6)) # Some tricky ranges demo_log10(c(2000, 9000)) #> scale_x_log10() demo_log10(c(2000, 14000)) #> scale_x_log10() demo_log10(c(2000, 85000), expand = c(0, 0)) #> scale_x_log10(expand = c(0, 0)) # An even smaller range that requires falling back to linear breaks demo_log10(c(1800, 2000)) #> scale_x_log10()"},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":null,"dir":"Reference","previous_headings":"","what":"Pretty breaks for date/times — breaks_pretty","title":"Pretty breaks for date/times — breaks_pretty","text":"Uses default R break algorithm implemented pretty(). primarily useful date/times, extended_breaks() slightly better job numeric scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pretty breaks for date/times — breaks_pretty","text":"","code":"breaks_pretty(n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pretty breaks for date/times — breaks_pretty","text":"n Desired number breaks. may get slightly fewer breaks requested. ... arguments passed pretty()","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_pretty.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pretty breaks for date/times — breaks_pretty","text":"","code":"one_month <- as.POSIXct(c(\"2020-05-01\", \"2020-06-01\")) demo_datetime(one_month) #> scale_x_datetime() demo_datetime(one_month, breaks = breaks_pretty(2)) #> scale_x_datetime(breaks = breaks_pretty(2)) demo_datetime(one_month, breaks = breaks_pretty(4)) #> scale_x_datetime(breaks = breaks_pretty(4)) # Tightly spaced date breaks often need custom labels too demo_datetime(one_month, breaks = breaks_pretty(12)) #> scale_x_datetime(breaks = breaks_pretty(12)) demo_datetime(one_month, breaks = breaks_pretty(12), labels = label_date_short() ) #> scale_x_datetime(breaks = breaks_pretty(12), labels = label_date_short())"},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":null,"dir":"Reference","previous_headings":"","what":"Breaks for timespan data — breaks_timespan","title":"Breaks for timespan data — breaks_timespan","text":"timespan units span variety bases (1000 seconds, 60 second minutes, 24 hours, 7 days), range input data determines base used calculating breaks","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Breaks for timespan data — breaks_timespan","text":"","code":"breaks_timespan(unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\"), n = 5)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Breaks for timespan data — breaks_timespan","text":"unit unit used interpret numeric data input n Desired number breaks. may get slightly fewer breaks requested.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_timespan.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Breaks for timespan data — breaks_timespan","text":"","code":"demo_timespan(seq(0, 100), breaks = breaks_timespan()) #> scale_x_continuous(breaks = breaks_timespan())"},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":null,"dir":"Reference","previous_headings":"","what":"Equally spaced breaks — breaks_width","title":"Equally spaced breaks — breaks_width","text":"Useful numeric, date, date-time scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Equally spaced breaks — breaks_width","text":"","code":"breaks_width(width, offset = 0)"},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Equally spaced breaks — breaks_width","text":"width Distance break. Either number, date/times, single string form \"{n} {unit}\", e.g. \"1 month\", \"5 days\". Unit can one \"sec\", \"min\", \"hour\", \"day\", \"week\", \"month\", \"year\". offset Use want breaks start zero, conventional date time boundary 1st January midnight. Either number, date/times, single string form \"{n} {unit}\", width. offset can vector, accumulate order given. mostly useful dates, e.g. c(\"3 months\", \"5 days\") offset three months five days, useful UK tax year. Note due way dates rounded, guarantee offset = c(x, y) give result offset = c(y, x).","code":""},{"path":"https://scales.r-lib.org/dev/reference/breaks_width.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Equally spaced breaks — breaks_width","text":"","code":"demo_continuous(c(0, 100)) #> scale_x_continuous() demo_continuous(c(0, 100), breaks = breaks_width(10)) #> scale_x_continuous(breaks = breaks_width(10)) demo_continuous(c(0, 100), breaks = breaks_width(20, -4)) #> scale_x_continuous(breaks = breaks_width(20, -4)) demo_continuous(c(0, 100), breaks = breaks_width(20, 4)) #> scale_x_continuous(breaks = breaks_width(20, 4)) # This is also useful for dates one_month <- as.POSIXct(c(\"2020-05-01\", \"2020-06-01\")) demo_datetime(one_month) #> scale_x_datetime() demo_datetime(one_month, breaks = breaks_width(\"1 week\")) #> scale_x_datetime(breaks = breaks_width(\"1 week\")) demo_datetime(one_month, breaks = breaks_width(\"5 days\")) #> scale_x_datetime(breaks = breaks_width(\"5 days\")) # This is so useful that scale_x_datetime() has a shorthand: demo_datetime(one_month, date_breaks = \"5 days\") #> scale_x_datetime(date_breaks = \"5 days\") # hms times also work one_hour <- hms::hms(hours = 0:1) demo_time(one_hour) #> scale_x_time() demo_time(one_hour, breaks = breaks_width(\"15 min\")) #> scale_x_time(breaks = breaks_width(\"15 min\")) demo_time(one_hour, breaks = breaks_width(\"600 sec\")) #> scale_x_time(breaks = breaks_width(\"600 sec\")) # Offets are useful for years that begin on dates other than the 1st of # January, such as the UK financial year, which begins on the 1st of April. three_years <- as.POSIXct(c(\"2020-01-01\", \"2021-01-01\", \"2022-01-01\")) demo_datetime( three_years, breaks = breaks_width(\"1 year\", offset = \"3 months\") ) #> scale_x_datetime(breaks = breaks_width(\"1 year\", offset = \"3 months\")) # The offset can be a vector, to create offsets that have compound units, # such as the UK fiscal (tax) year, which begins on the 6th of April. demo_datetime( three_years, breaks = breaks_width(\"1 year\", offset = c(\"3 months\", \"5 days\")) ) #> scale_x_datetime(breaks = breaks_width(\"1 year\", offset = c(\"3 months\", #> \"5 days\")))"},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute breaks for continuous scale — cbreaks","title":"Compute breaks for continuous scale — cbreaks","text":"function wraps components needed go continuous range set breaks labels suitable display axes legends.","code":""},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute breaks for continuous scale — cbreaks","text":"","code":"cbreaks(range, breaks = extended_breaks(), labels = scientific_format())"},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute breaks for continuous scale — cbreaks","text":"range numeric vector length 2 giving range underlying data breaks either vector break values, break function make vector breaks given range data labels either vector labels (character vector list expression) format function make vector labels called vector breaks. Labels can specified manually breaks - extremely dangerous supply labels know breaks .","code":""},{"path":"https://scales.r-lib.org/dev/reference/cbreaks.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compute breaks for continuous scale — cbreaks","text":"","code":"cbreaks(c(0, 100)) #> $breaks #> [1] 0 25 50 75 100 #> #> $labels #> [1] \"0.0e+00\" \"2.5e+01\" \"5.0e+01\" \"7.5e+01\" \"1.0e+02\" #> cbreaks(c(0, 100), breaks_pretty(3)) #> $breaks #> [1] 0 50 100 #> #> $labels #> [1] \"0e+00\" \"5e+01\" \"1e+02\" #> cbreaks(c(0, 100), breaks_pretty(10)) #> $breaks #> [1] 0 10 20 30 40 50 60 70 80 90 100 #> #> $labels #> [1] \"0e+00\" \"1e+01\" \"2e+01\" \"3e+01\" \"4e+01\" \"5e+01\" \"6e+01\" \"7e+01\" #> [9] \"8e+01\" \"9e+01\" \"1e+02\" #> cbreaks(c(1, 100), log_breaks()) #> $breaks #> [1] 1 10 100 #> #> $labels #> [1] \"1e+00\" \"1e+01\" \"1e+02\" #> cbreaks(c(1, 1e4), log_breaks()) #> $breaks #> [1] 1 10 100 1000 10000 #> #> $labels #> [1] \"1e+00\" \"1e+01\" \"1e+02\" \"1e+03\" \"1e+04\" #> cbreaks(c(0, 100), labels = math_format()) #> $breaks #> [1] 0 25 50 75 100 #> #> $labels #> expression(10^0, 10^25, 10^50, 10^75, 10^100) #> cbreaks(c(0, 1), labels = percent_format()) #> $breaks #> [1] 0.00 0.25 0.50 0.75 1.00 #> #> $labels #> [1] \"0%\" \"25%\" \"50%\" \"75%\" \"100%\" #> cbreaks(c(0, 1e6), labels = comma_format()) #> $breaks #> [1] 0 250000 500000 750000 1000000 #> #> $labels #> [1] \"0\" \"250,000\" \"500,000\" \"750,000\" \"1,000,000\" #> cbreaks(c(0, 1e6), labels = dollar_format()) #> $breaks #> [1] 0 250000 500000 750000 1000000 #> #> $labels #> [1] \"$0\" \"$250,000\" \"$500,000\" \"$750,000\" \"$1,000,000\" #> cbreaks(c(0, 30), labels = dollar_format()) #> $breaks #> [1] 0 10 20 30 #> #> $labels #> [1] \"$0\" \"$10\" \"$20\" \"$30\" #> # You can also specify them manually: cbreaks(c(0, 100), breaks = c(15, 20, 80)) #> $breaks #> [1] 15 20 80 #> #> $labels #> [1] \"1.5e+01\" \"2.0e+01\" \"8.0e+01\" #> cbreaks(c(0, 100), breaks = c(15, 20, 80), labels = c(1.5, 2.0, 8.0)) #> $breaks #> [1] 15 20 80 #> #> $labels #> [1] \"1.5\" \"2\" \"8\" #> cbreaks(c(0, 100), breaks = c(15, 20, 80), labels = expression(alpha, beta, gamma) ) #> $breaks #> [1] 15 20 80 #> #> $labels #> $labels[[1]] #> alpha #> #> $labels[[2]] #> beta #> #> $labels[[3]] #> gamma #> #>"},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":null,"dir":"Reference","previous_headings":"","what":"Modify standard R colour in hcl colour space. — col2hcl","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"Transforms rgb hcl, sets non-missing arguments backtransforms rgb.","code":""},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"","code":"col2hcl(colour, h = NULL, c = NULL, l = NULL, alpha = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"colour character vector colours modified h Hue, [0, 360] c Chroma, [0, 100] l Luminance, [0, 100] alpha Alpha, [0, 1].","code":""},{"path":"https://scales.r-lib.org/dev/reference/col2hcl.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Modify standard R colour in hcl colour space. — col2hcl","text":"","code":"reds <- rep(\"red\", 6) show_col(col2hcl(reds, h = seq(0, 180, length = 6))) show_col(col2hcl(reds, c = seq(0, 80, length = 6))) show_col(col2hcl(reds, l = seq(0, 100, length = 6))) show_col(col2hcl(reds, alpha = seq(0, 1, length = 6)))"},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":null,"dir":"Reference","previous_headings":"","what":"Colour mapping — col_numeric","title":"Colour mapping — col_numeric","text":"Conveniently maps data values (numeric factor/character) colours according given palette, can provided variety formats.","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Colour mapping — col_numeric","text":"","code":"col_numeric( palette, domain, na.color = \"#808080\", alpha = FALSE, reverse = FALSE ) col_bin( palette, domain, bins = 7, pretty = TRUE, na.color = \"#808080\", alpha = FALSE, reverse = FALSE, right = FALSE ) col_quantile( palette, domain, n = 4, probs = seq(0, 1, length.out = n + 1), na.color = \"#808080\", alpha = FALSE, reverse = FALSE, right = FALSE ) col_factor( palette, domain, levels = NULL, ordered = FALSE, na.color = \"#808080\", alpha = FALSE, reverse = FALSE )"},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Colour mapping — col_numeric","text":"palette colours colour function values mapped domain possible values can mapped. col_numeric col_bin, can simple numeric range (e.g. c(0, 100)); col_quantile needs representative numeric data; col_factor needs categorical data. NULL, whenever resulting colour function called, x value represent domain. implies function invoked multiple times, encoding values colours may consistent; consistency needed, must provide non-NULL domain. na.color colour return NA values. Note na.color = NA valid. alpha Whether alpha channels respected ignored. TRUE colors without explicit alpha information treated fully opaque. reverse Whether colors (color function) palette used reverse order. example, default order palette goes blue green, reverse = TRUE result colors going green blue. bins Either numeric vector two unique cut points single number (greater equal 2) giving number intervals domain values cut. pretty Whether use function pretty() generate bins argument bins single number. pretty = TRUE, actual number bins may number bins specified. pretty = FALSE, seq() used generate bins breaks may \"pretty\". right parameter supplied base::cut(). See Details n Number equal-size quantiles desired. precise control, use probs argument instead. probs See stats::quantile(). provided, n argument ignored. levels alternate way specifying levels; specified, domain ignored ordered TRUE domain needs coerced factor, treat already correct order","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Colour mapping — col_numeric","text":"function takes single parameter x; called vector numbers (except col_factor, expects factors/characters), #RRGGBB colour strings returned (unless alpha = TRUE case #RRGGBBAA may also possible).","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Colour mapping — col_numeric","text":"col_numeric simple linear mapping continuous numeric data interpolated palette. col_bin also maps continuous numeric data, performs binning based value (see base::cut() function). col_bin defaults cut function include.lowest = TRUE right = FALSE. col_quantile similarly bins numeric data, via stats::quantile() function. col_factor maps factors colours. palette discrete different number colours number factors, interpolation used. palette argument can following: character vector RGB named colours. Examples: palette(), c(\"#000000\", \"#0000FF\", \"#FFFFFF\"), topo.colors(10) name RColorBrewer palette, e.g. \"BuPu\" \"Greens\". full name viridis palette: \"viridis\", \"magma\", \"inferno\", \"plasma\". function receives single value 0 1 returns colour. Examples: colorRamp(c(\"#000000\", \"#FFFFFF\"), interpolate=\"spline\").","code":""},{"path":"https://scales.r-lib.org/dev/reference/col_numeric.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Colour mapping — col_numeric","text":"","code":"pal <- col_bin(\"Greens\", domain = 0:100) show_col(pal(sort(runif(10, 60, 100)))) # Exponential distribution, mapped continuously show_col(col_numeric(\"Blues\", domain = NULL)(sort(rexp(16)))) # Exponential distribution, mapped by interval show_col(col_bin(\"Blues\", domain = NULL, bins = 4)(sort(rexp(16)))) # Exponential distribution, mapped by quantile show_col(col_quantile(\"Blues\", domain = NULL)(sort(rexp(16)))) # Categorical data; by default, the values being coloured span the gamut... show_col(col_factor(\"RdYlBu\", domain = NULL)(LETTERS[1:5])) # ...unless the data is a factor, without droplevels... show_col(col_factor(\"RdYlBu\", domain = NULL)(factor(LETTERS[1:5], levels = LETTERS))) #> Warning: n too large, allowed maximum for palette RdYlBu is 11 #> Returning the palette you asked for with that many colors # ...or the domain is stated explicitly. show_col(col_factor(\"RdYlBu\", levels = LETTERS)(LETTERS[1:5])) #> Warning: n too large, allowed maximum for palette RdYlBu is 11 #> Returning the palette you asked for with that many colors"},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":null,"dir":"Reference","previous_headings":"","what":"Fast colour interpolation — colour_ramp","title":"Fast colour interpolation — colour_ramp","text":"Returns function maps interval [0,1] set colours. Interpolation performed CIELAB colour space. Similar colorRamp(space = 'Lab'), hundreds times faster, provides results \"#RRGGBB\" (\"#RRGGBBAA\") character form instead RGB colour matrices.","code":""},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Fast colour interpolation — colour_ramp","text":"","code":"colour_ramp(colors, na.color = NA, alpha = TRUE)"},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Fast colour interpolation — colour_ramp","text":"colors Colours interpolate; must valid argument grDevices::col2rgb(). can character vector \"#RRGGBB\" \"#RRGGBBAA\", colour names grDevices::colors(), positive integer indexes grDevices::palette(). na.color colour map NA values (example, \"#606060\" dark grey, \"#00000000\" transparent) values outside [0,1]. Can NA, simply cause NA inserted output. alpha Whether include alpha transparency channels interpolation. TRUE alpha information included interpolation. returned colours provided \"#RRGGBBAA\" format needed, .e., cases colour fully opaque, \"AA\" part equal \"FF\". Fully opaque colours returned \"#RRGGBB\" format. FALSE, alpha information discarded interpolation colours always returned \"#RRGGBB\".","code":""},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Fast colour interpolation — colour_ramp","text":"function takes numeric vector returns character vector length RGB RGBA hex colours.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/colour_ramp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Fast colour interpolation — colour_ramp","text":"","code":"ramp <- colour_ramp(c(\"red\", \"green\", \"blue\")) show_col(ramp(seq(0, 1, length = 12)))"},{"path":"https://scales.r-lib.org/dev/reference/comma.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_number()/label_comma() — comma","title":"Superseded interface to label_number()/label_comma() — comma","text":"functions kept backward compatibility; switch label_number()/label_comma() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/comma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_number()/label_comma() — comma","text":"","code":"comma( x, accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, digits, ... ) number_format( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \" \", decimal.mark = \".\", style_positive = c(\"none\", \"plus\", \"space\"), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, trim = TRUE, ... ) comma_format( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, digits, ... )"},{"path":"https://scales.r-lib.org/dev/reference/comma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_number()/label_comma() — comma","text":"x numeric vector format. accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). digits Use accuracy instead. ... arguments passed base::format(). style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label.","code":""},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":null,"dir":"Reference","previous_headings":"","what":"Continuous scale — cscale","title":"Continuous scale — cscale","text":"Continuous scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Continuous scale — cscale","text":"","code":"cscale(x, palette, na.value = NA_real_, trans = transform_identity())"},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Continuous scale — cscale","text":"x vector continuous values scale palette palette use. Built palettes: pal_area, pal_brewer, pal_dichromat, pal_div_gradient, pal_gradient_n, pal_grey, pal_hue, pal_identity, pal_linetype, pal_manual, pal_rescale, pal_seq_gradient, pal_shape, pal_viridis na.value value use missing values trans transformation object describing transform raw data prior scaling. Defaults identity transformation leaves data unchanged. Built transformations: transform_asinh, transform_asn, transform_atanh, transform_boxcox, transform_compose, transform_date, transform_exp, transform_hms, transform_identity, transform_log, transform_log10, transform_log1p, transform_log2, transform_logit, transform_modulus, transform_probability, transform_probit, transform_pseudo_log, transform_reciprocal, transform_reverse, transform_sqrt, transform_time, transform_timespan, transform_yj .","code":""},{"path":"https://scales.r-lib.org/dev/reference/cscale.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Continuous scale — cscale","text":"","code":"with(mtcars, plot(disp, mpg, cex = cscale(hp, pal_rescale()))) with(mtcars, plot(disp, mpg, cex = cscale(hp, pal_rescale(), trans = transform_sqrt() ))) with(mtcars, plot(disp, mpg, cex = cscale(hp, pal_area()))) with(mtcars, plot(disp, mpg, pch = 20, cex = 5, col = cscale(hp, pal_seq_gradient(\"grey80\", \"black\")) ))"},{"path":"https://scales.r-lib.org/dev/reference/date_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Regularly spaced dates — date_breaks","title":"Regularly spaced dates — date_breaks","text":"Use breaks_width() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/date_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Regularly spaced dates — date_breaks","text":"","code":"date_breaks(width = \"1 month\")"},{"path":"https://scales.r-lib.org/dev/reference/date_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Regularly spaced dates — date_breaks","text":"width interval specification, one \"sec\", \"min\", \"hour\", \"day\", \"week\", \"month\", \"year\". Can integer space, followed \"s\". Fractional seconds supported.","code":""},{"path":"https://scales.r-lib.org/dev/reference/date_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_date()/label_time() — date_format","title":"Superseded interface to label_date()/label_time() — date_format","text":"functions kept backward compatibility; switch [label_date()/label_time() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/date_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_date()/label_time() — date_format","text":"","code":"date_format(format = \"%Y-%m-%d\", tz = \"UTC\", locale = NULL) time_format(format = \"%H:%M:%S\", tz = \"UTC\", locale = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/date_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_date()/label_time() — date_format","text":"format date_format() time_format() date/time format string using standard POSIX specification. See strptime() details. date_short() character vector length 4 giving format components use year, month, day, hour respectively. tz time zone name, see timezones(). Defaults UTC locale Locale use day month names. default uses current locale. Setting argument requires stringi, can see complete list supported locales stringi::stri_locale_list().","code":""},{"path":"https://scales.r-lib.org/dev/reference/demo_continuous.html","id":null,"dir":"Reference","previous_headings":"","what":"Demonstrate scales functions with ggplot2 code — demo_continuous","title":"Demonstrate scales functions with ggplot2 code — demo_continuous","text":"functions generate ggplot2 code needed use scales functions real code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/demo_continuous.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Demonstrate scales functions with ggplot2 code — demo_continuous","text":"","code":"demo_continuous(x, ...) demo_log10(x, ...) demo_discrete(x, ...) demo_datetime(x, ...) demo_time(x, ...) demo_timespan(x, ...)"},{"path":"https://scales.r-lib.org/dev/reference/demo_continuous.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Demonstrate scales functions with ggplot2 code — demo_continuous","text":"x vector data","code":""},{"path":"https://scales.r-lib.org/dev/reference/dollar_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_currency() — dollar_format","title":"Superseded interface to label_currency() — dollar_format","text":"functions kept backward compatibility; switch label_currency() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/dollar_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_currency() — dollar_format","text":"","code":"dollar_format( accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_cents = 1e+05, negative_parens = deprecated(), ... ) dollar( x, accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_cents = 1e+05, negative_parens = deprecated(), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, ... ) label_dollar( accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_cents = 1e+05, negative_parens = deprecated(), ... )"},{"path":"https://scales.r-lib.org/dev/reference/dollar_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_currency() — dollar_format","text":"scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). largest_with_cents Like largest_with_fractional() label_currency() negative_parens Use style_negative = \"parens\" instead. ... arguments passed base::format(). x numeric vector","code":""},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":null,"dir":"Reference","previous_headings":"","what":"Discrete scale — dscale","title":"Discrete scale — dscale","text":"Discrete scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Discrete scale — dscale","text":"","code":"dscale(x, palette, na.value = NA)"},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Discrete scale — dscale","text":"x vector discrete values scale palette aesthetic palette use na.value aesthetic use missing values","code":""},{"path":"https://scales.r-lib.org/dev/reference/dscale.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Discrete scale — dscale","text":"","code":"with(mtcars, plot(disp, mpg, pch = 20, cex = 3, col = dscale(factor(cyl), pal_brewer()) ))"},{"path":"https://scales.r-lib.org/dev/reference/expand_range.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand a range with a multiplicative or additive constant — expand_range","title":"Expand a range with a multiplicative or additive constant — expand_range","text":"Expand range multiplicative additive constant","code":""},{"path":"https://scales.r-lib.org/dev/reference/expand_range.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand a range with a multiplicative or additive constant — expand_range","text":"","code":"expand_range(range, mul = 0, add = 0, zero_width = 1)"},{"path":"https://scales.r-lib.org/dev/reference/expand_range.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand a range with a multiplicative or additive constant — expand_range","text":"range range data, numeric vector length 2 mul multiplicative constant add additive constant zero_width distance use range zero width","code":""},{"path":"https://scales.r-lib.org/dev/reference/format_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Label using format() — format_format","title":"Label using format() — format_format","text":"function kept backward compatiblity; either use label_number() label_date() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/format_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label using format() — format_format","text":"","code":"format_format(...)"},{"path":"https://scales.r-lib.org/dev/reference/format_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label using format() — format_format","text":"... Arguments passed format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/fullseq.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate sequence of fixed size intervals covering range. — fullseq","title":"Generate sequence of fixed size intervals covering range. — fullseq","text":"Generate sequence fixed size intervals covering range.","code":""},{"path":"https://scales.r-lib.org/dev/reference/fullseq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate sequence of fixed size intervals covering range. — fullseq","text":"","code":"fullseq(range, size, ...)"},{"path":"https://scales.r-lib.org/dev/reference/fullseq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate sequence of fixed size intervals covering range. — fullseq","text":"range range size interval size ... arguments passed methods","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":null,"dir":"Reference","previous_headings":"","what":"Label bytes (1 kB, 2 MB, etc) — label_bytes","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"Scale bytes human friendly units. Can use either SI units (e.g. kB = 1000 bytes) binary units (e.g. kiB = 1024 bytes). See Units Information Wikipedia details.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"","code":"label_bytes(units = \"auto_si\", accuracy = 1, scale = 1, ...)"},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"units Unit use. either one : \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\" SI units (base 1000). \"kiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\" binary units (base 1024). auto_si auto_binary automatically pick appropriate unit value. accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. ... Arguments passed number prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"labeller function takes numeric vector breaks returns character vector labels.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_bytes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label bytes (1 kB, 2 MB, etc) — label_bytes","text":"","code":"demo_continuous(c(1, 1e6)) #> scale_x_continuous() demo_continuous(c(1, 1e6), labels = label_bytes()) #> scale_x_continuous(labels = label_bytes()) # Auto units are particularly nice on log scales demo_log10(c(1, 1e7), labels = label_bytes()) #> scale_x_log10(labels = label_bytes()) # You can also set the units demo_continuous(c(1, 1e6), labels = label_bytes(\"kB\")) #> scale_x_continuous(labels = label_bytes(\"kB\")) # You can also use binary units where a megabyte is defined as # (1024) ^ 2 bytes rather than (1000) ^ 2. You'll need to override # the default breaks to make this more informative. demo_continuous(c(1, 1024^2), breaks = breaks_width(250 * 1024), labels = label_bytes(\"auto_binary\") ) #> scale_x_continuous(breaks = breaks_width(250 * 1024), labels = label_bytes(\"auto_binary\"))"},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":null,"dir":"Reference","previous_headings":"","what":"Label currencies ($100, €2.50, etc) — label_currency","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"Format numbers currency, rounding values monetary fractional monetary using unit convenient heuristic.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"","code":"label_currency( accuracy = NULL, scale = 1, prefix = \"$\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, largest_with_fractional = 1e+05, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"accuracy, largest_with_fractional Number round . NULL, default, values rounded nearest integer, unless values non-zero fractional component (e.g. cents) largest value less largest_with_fractional default 100,000. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... Arguments passed number style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_currency.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label currencies ($100, €2.50, etc) — label_currency","text":"","code":"demo_continuous(c(0, 1), labels = label_currency()) #> scale_x_continuous(labels = label_currency()) demo_continuous(c(1, 100), labels = label_currency()) #> scale_x_continuous(labels = label_currency()) # Customise currency display with prefix and suffix demo_continuous(c(1, 100), labels = label_currency(prefix = \"USD \")) #> scale_x_continuous(labels = label_currency(prefix = \"USD \")) yen <- label_currency( prefix = \"¥\", suffix = \"\", big.mark = \".\", decimal.mark = \",\" ) demo_continuous(c(1000, 1100), labels = yen) #> scale_x_continuous(labels = yen) # Use style_negative = \"parens\" for finance style display demo_continuous(c(-100, 100), labels = label_currency(style_negative = \"parens\")) #> scale_x_continuous(labels = label_currency(style_negative = \"parens\")) # Use scale_cut to use K/M/B where appropriate demo_log10(c(1, 1e16), breaks = log_breaks(7, 1e3), labels = label_currency(scale_cut = cut_short_scale()) ) #> scale_x_log10(breaks = log_breaks(7, 1000), labels = label_currency(scale_cut = cut_short_scale())) # cut_short_scale() uses B = one thousand million # cut_long_scale() uses B = one million million demo_log10(c(1, 1e16), breaks = log_breaks(7, 1e3), labels = label_currency(scale_cut = cut_long_scale()) ) #> scale_x_log10(breaks = log_breaks(7, 1000), labels = label_currency(scale_cut = cut_long_scale())) # You can also define your own breaks gbp <- label_currency( prefix = \"\\u00a3\", scale_cut = c(0, k = 1e3, m = 1e6, bn = 1e9, tn = 1e12) ) demo_log10(c(1, 1e12), breaks = log_breaks(5, 1e3), labels = gbp) #> scale_x_log10(breaks = log_breaks(5, 1000), labels = gbp)"},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":null,"dir":"Reference","previous_headings":"","what":"Label date/times — label_date","title":"Label date/times — label_date","text":"label_date() label_time() label date/times using date/time format strings. label_date_short() automatically constructs short format string sufficient uniquely identify labels. inspired matplotlib's ConciseDateFormatter, uses slightly different approach: ConciseDateFormatter formats \"firsts\" (e.g. first day month, first day day) specially; date_short() formats changes (e.g. new month, new year) specially. label_timespan() intended show time passed adds common time units suffix input (ns, μs, ms, s, m, h, d, w).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label date/times — label_date","text":"","code":"label_date(format = \"%Y-%m-%d\", tz = \"UTC\", locale = NULL) label_date_short(format = c(\"%Y\", \"%b\", \"%d\", \"%H:%M\"), sep = \"\\n\") label_time(format = \"%H:%M:%S\", tz = \"UTC\", locale = NULL) label_timespan( unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\"), space = FALSE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label date/times — label_date","text":"format date_format() time_format() date/time format string using standard POSIX specification. See strptime() details. date_short() character vector length 4 giving format components use year, month, day, hour respectively. tz time zone name, see timezones(). Defaults UTC locale Locale use day month names. default uses current locale. Setting argument requires stringi, can see complete list supported locales stringi::stri_locale_list(). sep Separator use combining date formats single string. unit unit used interpret numeric input space Add space time unit? ... Arguments passed number accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). trim Logical, FALSE, values right-justified common width (see base::format()).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label date/times — label_date","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_date.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label date/times — label_date","text":"","code":"date_range <- function(start, days) { start <- as.POSIXct(start) c(start, start + days * 24 * 60 * 60) } two_months <- date_range(\"2020-05-01\", 60) demo_datetime(two_months) #> scale_x_datetime() demo_datetime(two_months, labels = date_format(\"%m/%d\")) #> scale_x_datetime(labels = date_format(\"%m/%d\")) demo_datetime(two_months, labels = date_format(\"%e %b\", locale = \"fr\")) #> scale_x_datetime(labels = date_format(\"%e %b\", locale = \"fr\")) demo_datetime(two_months, labels = date_format(\"%e %B\", locale = \"es\")) #> scale_x_datetime(labels = date_format(\"%e %B\", locale = \"es\")) # ggplot2 provides a short-hand: demo_datetime(two_months, date_labels = \"%m/%d\") #> scale_x_datetime(date_labels = \"%m/%d\") # An alternative labelling system is label_date_short() demo_datetime(two_months, date_breaks = \"7 days\", labels = label_date_short()) #> scale_x_datetime(date_breaks = \"7 days\", labels = label_date_short()) # This is particularly effective for dense labels one_year <- date_range(\"2020-05-01\", 365) demo_datetime(one_year, date_breaks = \"month\") #> scale_x_datetime(date_breaks = \"month\") demo_datetime(one_year, date_breaks = \"month\", labels = label_date_short()) #> scale_x_datetime(date_breaks = \"month\", labels = label_date_short())"},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers in log format (10^3, 10^6, etc) — label_log","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"label_log() displays numbers base^exponent, using superscript formatting.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"","code":"label_log(base = 10, digits = 3)"},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"base Base logarithm use digits Number significant digits show exponent. Argument passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_log.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers in log format (10^3, 10^6, etc) — label_log","text":"","code":"demo_log10(c(1, 1e5), labels = label_log()) #> scale_x_log10(labels = label_log()) demo_log10(c(1, 1e5), breaks = breaks_log(base = 2), labels = label_log(base = 2)) #> scale_x_log10(breaks = breaks_log(base = 2), labels = label_log(base = 2))"},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"Use label_number() force decimal display numbers (.e. use scientific notation). label_comma() special case inserts comma every three digits.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"","code":"label_number( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \" \", decimal.mark = \".\", style_positive = c(\"none\", \"plus\", \"space\"), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, trim = TRUE, ... ) label_comma( accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \",\", decimal.mark = \".\", trim = TRUE, digits, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format(). digits Use accuracy instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers in decimal format (e.g. 0.12, 1,234) — label_number","text":"","code":"demo_continuous(c(-1e6, 1e6)) #> scale_x_continuous() demo_continuous(c(-1e6, 1e6), labels = label_number()) #> scale_x_continuous(labels = label_number()) demo_continuous(c(-1e6, 1e6), labels = label_comma()) #> scale_x_continuous(labels = label_comma()) # Use scale to rescale very small or large numbers to generate # more readable labels demo_continuous(c(0, 1e6), labels = label_number()) #> scale_x_continuous(labels = label_number()) demo_continuous(c(0, 1e6), labels = label_number(scale = 1 / 1e3)) #> scale_x_continuous(labels = label_number(scale = 1/1000)) demo_continuous(c(0, 1e-6), labels = label_number()) #> scale_x_continuous(labels = label_number()) demo_continuous(c(0, 1e-6), labels = label_number(scale = 1e6)) #> scale_x_continuous(labels = label_number(scale = 1e+06)) #' Use scale_cut to automatically add prefixes for large/small numbers demo_log10( c(1, 1e9), breaks = log_breaks(10), labels = label_number(scale_cut = cut_short_scale()) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_short_scale())) demo_log10( c(1, 1e9), breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"m\")) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"m\"))) demo_log10( c(1e-9, 1), breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\")) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\"))) # use scale and scale_cut when data already uses SI prefix # for example, if data was stored in kg demo_log10( c(1e-9, 1), breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\"), scale = 1e3) ) #> scale_x_log10(breaks = log_breaks(10), labels = label_number(scale_cut = cut_si(\"g\"), #> scale = 1000)) #' # Use style arguments to vary the appearance of positive and negative numbers demo_continuous(c(-1e3, 1e3), labels = label_number( style_positive = \"plus\", style_negative = \"minus\" )) #> scale_x_continuous(labels = label_number(style_positive = \"plus\", #> style_negative = \"minus\")) demo_continuous(c(-1e3, 1e3), labels = label_number(style_negative = \"parens\")) #> scale_x_continuous(labels = label_number(style_negative = \"parens\")) # You can use prefix and suffix for other types of display demo_continuous(c(32, 212), labels = label_number(suffix = \"\\u00b0F\")) #> scale_x_continuous(labels = label_number(suffix = \"°F\")) demo_continuous(c(0, 100), labels = label_number(suffix = \"\\u00b0C\")) #> scale_x_continuous(labels = label_number(suffix = \"°C\"))"},{"path":"https://scales.r-lib.org/dev/reference/label_number_auto.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers, avoiding scientific notation where possible — label_number_auto","title":"Label numbers, avoiding scientific notation where possible — label_number_auto","text":"Switches number_format() scientific_format() based set heuristics designed automatically generate useful labels across wide range inputs","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number_auto.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers, avoiding scientific notation where possible — label_number_auto","text":"","code":"label_number_auto()"},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_number_auto.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers, avoiding scientific notation where possible — label_number_auto","text":"","code":"# Very small and very large numbers get scientific notation demo_continuous(c(0, 1e-6), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1e9), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) # Other ranges get the numbers printed in full demo_continuous(c(0, 1e-3), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1e3), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) demo_continuous(c(0, 1e6), labels = label_number_auto()) #> scale_x_continuous(labels = label_number_auto()) # Transformation is applied individually so you get as little # scientific notation as possible demo_log10(c(1, 1e7), labels = label_number_auto()) #> scale_x_log10(labels = label_number_auto())"},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"label_number_si() deprecated previous unit actually use SI units, instead used called \"short scale\". can now get results label_number(scale_cut = cut_short_scale()), want correct SI units, label_number(scale_cut = cut_si(\"unit\")).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"","code":"label_number_si(unit = \"\", accuracy = NULL, scale = 1, suffix = \"\", ...)"},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"unit Unit measurement (e.g. \"m\" meter, SI unit length). accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data already using SI prefix. suffix Additional text display number. ... Arguments passed label_number prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()).","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_number_si.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers with SI prefixes (2 kg, 5 mm, etc) — label_number_si","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":null,"dir":"Reference","previous_headings":"","what":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"Round values integers display ordinal values (e.g. 1st, 2nd, 3rd). Built-rules provided English, French, Spanish.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"","code":"label_ordinal( prefix = \"\", suffix = \"\", big.mark = \" \", rules = ordinal_english(), ... ) ordinal_english() ordinal_french(gender = c(\"masculin\", \"feminin\"), plural = FALSE) ordinal_spanish()"},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. rules Named list regular expressions, matched order. Name gives suffix, value specifies numbers match. ... Arguments passed number accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()). gender Masculin feminin gender French ordinal. plural Plural singular French ordinal.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_ordinal.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label ordinal numbers (1st, 2nd, 3rd, etc) — label_ordinal","text":"","code":"demo_continuous(c(1, 5)) #> scale_x_continuous() demo_continuous(c(1, 5), labels = label_ordinal()) #> scale_x_continuous(labels = label_ordinal()) demo_continuous(c(1, 5), labels = label_ordinal(rules = ordinal_french())) #> scale_x_continuous(labels = label_ordinal(rules = ordinal_french())) # The rules are just a set of regular expressions that are applied in turn ordinal_french() #> $er #> [1] \"^1$\" #> #> $e #> [1] \".\" #> ordinal_english() #> $st #> [1] \"(? #> $nd #> [1] \"(? #> $rd #> [1] \"(? #> $th #> [1] \"(?<=1)[123]$\" #> #> $th #> [1] \"[0456789]$\" #> #> $th #> [1] \".\" #> # Note that ordinal rounds values, so you may need to adjust the breaks too demo_continuous(c(1, 10)) #> scale_x_continuous() demo_continuous(c(1, 10), labels = label_ordinal()) #> scale_x_continuous(labels = label_ordinal()) demo_continuous(c(1, 10), labels = label_ordinal(), breaks = breaks_width(2) ) #> scale_x_continuous(labels = label_ordinal(), breaks = breaks_width(2))"},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":null,"dir":"Reference","previous_headings":"","what":"Label with mathematical annotations — label_parse","title":"Label with mathematical annotations — label_parse","text":"label_parse() produces expression strings parsing ; label_math() constructs expressions replacing pronoun .x string.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label with mathematical annotations — label_parse","text":"","code":"label_parse() label_math(expr = 10^.x, format = force)"},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label with mathematical annotations — label_parse","text":"expr expression use format another format function apply prior mathematical transformation - makes easier use floating point numbers mathematical expressions.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label with mathematical annotations — label_parse","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_parse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label with mathematical annotations — label_parse","text":"","code":"# Use label_parse() with discrete scales greek <- c(\"alpha\", \"beta\", \"gamma\") demo_discrete(greek) #> scale_x_discrete() demo_discrete(greek, labels = label_parse()) #> scale_x_discrete(labels = label_parse()) # Use label_math() with continuous scales demo_continuous(c(1, 5)) #> scale_x_continuous() demo_continuous(c(1, 5), labels = label_math(alpha[.x])) #> scale_x_continuous(labels = label_math(alpha[.x])) demo_continuous(c(1, 5), labels = label_math()) #> scale_x_continuous(labels = label_math())"},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":null,"dir":"Reference","previous_headings":"","what":"Label percentages (2.5%, 50%, etc) — label_percent","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"Label percentages (2.5%, 50%, etc)","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"","code":"label_percent( accuracy = NULL, scale = 100, prefix = \"\", suffix = \"%\", big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... Arguments passed label_number style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_percent.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label percentages (2.5%, 50%, etc) — label_percent","text":"","code":"demo_continuous(c(0, 1)) #> scale_x_continuous() demo_continuous(c(0, 1), labels = label_percent()) #> scale_x_continuous(labels = label_percent()) # Use prefix and suffix to create your own variants french_percent <- label_percent( decimal.mark = \",\", suffix = \" %\" ) demo_continuous(c(0, .01), labels = french_percent) #> scale_x_continuous(labels = french_percent)"},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":null,"dir":"Reference","previous_headings":"","what":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"Formatter p-values, using \"<\" \">\" p-values close 0 1.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"","code":"label_pvalue( accuracy = 0.001, decimal.mark = \".\", prefix = NULL, add_p = FALSE )"},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. decimal.mark character used indicate numeric decimal point. prefix character vector length 3 giving prefixes put front numbers. default values c(\"<\", \"\", \">\") add_p TRUE c(\"p<\", \"p=\", \"p>\") FALSE. add_p Add \"p=\" value?","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_pvalue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label p-values (e.g. <0.001, 0.25, p >= 0.99) — label_pvalue","text":"","code":"demo_continuous(c(0, 1)) #> scale_x_continuous() demo_continuous(c(0, 1), labels = label_pvalue()) #> scale_x_continuous(labels = label_pvalue()) demo_continuous(c(0, 1), labels = label_pvalue(accuracy = 0.1)) #> scale_x_continuous(labels = label_pvalue(accuracy = 0.1)) demo_continuous(c(0, 1), labels = label_pvalue(add_p = TRUE)) #> scale_x_continuous(labels = label_pvalue(add_p = TRUE)) # Or provide your own prefixes prefix <- c(\"p < \", \"p = \", \"p > \") demo_continuous(c(0, 1), labels = label_pvalue(prefix = prefix)) #> scale_x_continuous(labels = label_pvalue(prefix = prefix))"},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":null,"dir":"Reference","previous_headings":"","what":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"Label numbers scientific notation (e.g. 1e05, 1.5e-02)","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"","code":"label_scientific( digits = 3, scale = 1, prefix = \"\", suffix = \"\", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"digits Number digits show exponent. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_scientific.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label numbers with scientific notation (e.g. 1e05, 1.5e-02) — label_scientific","text":"","code":"demo_continuous(c(1, 10)) #> scale_x_continuous() demo_continuous(c(1, 10), labels = label_scientific()) #> scale_x_continuous(labels = label_scientific()) demo_continuous(c(1, 10), labels = label_scientific(digits = 3)) #> scale_x_continuous(labels = label_scientific(digits = 3)) demo_log10(c(1, 1e9)) #> scale_x_log10()"},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":null,"dir":"Reference","previous_headings":"","what":"Label strings by wrapping across multiple lines — label_wrap","title":"Label strings by wrapping across multiple lines — label_wrap","text":"Uses strwrap() split long labels across multiple lines.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Label strings by wrapping across multiple lines — label_wrap","text":"","code":"label_wrap(width)"},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Label strings by wrapping across multiple lines — label_wrap","text":"width Number characters per line.","code":""},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Label strings by wrapping across multiple lines — label_wrap","text":"label_() functions return \"labelling\" function, .e. function takes vector x returns character vector length(x) giving label input value. Labelling functions designed used labels argument ggplot2 scales. examples demonstrate use x scales, work similarly scales, including generate legends rather axes.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/label_wrap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Label strings by wrapping across multiple lines — label_wrap","text":"","code":"x <- c( \"this is a long label\", \"this is another long label\", \"this a label this is even longer\" ) demo_discrete(x) #> scale_x_discrete() demo_discrete(x, labels = label_wrap(10)) #> scale_x_discrete(labels = label_wrap(10)) demo_discrete(x, labels = label_wrap(20)) #> scale_x_discrete(labels = label_wrap(20))"},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":null,"dir":"Reference","previous_headings":"","what":"Minor breaks — minor_breaks_width","title":"Minor breaks — minor_breaks_width","text":"Generate minor breaks major breaks either spaced fixed width, fixed number.","code":""},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minor breaks — minor_breaks_width","text":"","code":"minor_breaks_width(width, offset) minor_breaks_n(n)"},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minor breaks — minor_breaks_width","text":"width Distance break. Either number, date/times, single string form \"{n} {unit}\", e.g. \"1 month\", \"5 days\". Unit can one \"sec\", \"min\", \"hour\", \"day\", \"week\", \"month\", \"year\". offset Use want breaks start zero, conventional date time boundary 1st January midnight. Either number, date/times, single string form \"{n} {unit}\", width. offset can vector, accumulate order given. mostly useful dates, e.g. c(\"3 months\", \"5 days\") offset three months five days, useful UK tax year. Note due way dates rounded, guarantee offset = c(x, y) give result offset = c(y, x). n number breaks","code":""},{"path":"https://scales.r-lib.org/dev/reference/minor_breaks_width.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Minor breaks — minor_breaks_width","text":"","code":"demo_log10(c(1, 1e6)) #> scale_x_log10() if (FALSE) { # Requires https://github.com/tidyverse/ggplot2/pull/3591 demo_log10(c(1, 1e6), minor_breaks = minor_breaks_n(10)) }"},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":null,"dir":"Reference","previous_headings":"","what":"Mute standard colour — muted","title":"Mute standard colour — muted","text":"Mute standard colour","code":""},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mute standard colour — muted","text":"","code":"muted(colour, l = 30, c = 70)"},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mute standard colour — muted","text":"colour character vector colours modify l new luminance c new chroma","code":""},{"path":"https://scales.r-lib.org/dev/reference/muted.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Mute standard colour — muted","text":"","code":"muted(\"red\") #> [1] \"#832424\" muted(\"blue\") #> [1] \"#3A3A98\" show_col(c(\"red\", \"blue\", muted(\"red\"), muted(\"blue\")))"},{"path":"https://scales.r-lib.org/dev/reference/new_transform.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a new transformation object — new_transform","title":"Create a new transformation object — new_transform","text":"transformation encapsulates transformation inverse, well information needed create pleasing breaks labels. breaks() function applied un-transformed range data, format() function takes output breaks() function returns well-formatted labels. Transformations may also include derivatives transformation inverse, required .","code":""},{"path":"https://scales.r-lib.org/dev/reference/new_transform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a new transformation object — new_transform","text":"","code":"new_transform( name, transform, inverse, d_transform = NULL, d_inverse = NULL, breaks = extended_breaks(), minor_breaks = regular_minor_breaks(), format = format_format(), domain = c(-Inf, Inf) ) trans_new( name, transform, inverse, d_transform = NULL, d_inverse = NULL, breaks = extended_breaks(), minor_breaks = regular_minor_breaks(), format = format_format(), domain = c(-Inf, Inf) ) is.transform(x) is.trans(x) as.transform(x, arg = deparse(substitute(x))) as.trans(x, arg = deparse(substitute(x)))"},{"path":"https://scales.r-lib.org/dev/reference/new_transform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a new transformation object — new_transform","text":"name transformation name transform function, name function, performs transformation inverse function, name function, performs inverse transformation d_transform Optional function, name function, gives derivative transformation. May NULL. d_inverse Optional function, name function, gives derivative inverse transformation. May NULL. breaks default breaks function transformation. breaks function applied un-transformed data. minor_breaks default minor breaks function transformation. format default format transformation. format applied breaks generated un-transformed data. domain allowed range data transformed. function transform argument expected able transform domain argument.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":null,"dir":"Reference","previous_headings":"","what":"A low-level numeric formatter — number","title":"A low-level numeric formatter — number","text":"function low-level helper powers many labelling functions. generally need call directly unless creating labelling function.","code":""},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A low-level numeric formatter — number","text":"","code":"number( x, accuracy = NULL, scale = 1, prefix = \"\", suffix = \"\", big.mark = \" \", decimal.mark = \".\", style_positive = c(\"none\", \"plus\", \"space\"), style_negative = c(\"hyphen\", \"minus\", \"parens\"), scale_cut = NULL, trim = TRUE, ... ) cut_short_scale(space = FALSE) cut_long_scale(space = FALSE) cut_time_scale(space = FALSE) cut_si(unit)"},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A low-level numeric formatter — number","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. style_positive string determines style positive numbers: \"none\" (default): change, e.g. 1. \"plus\": preceded +, e.g. +1. \"space\": preceded Unicode \"figure space\", .e., space equally wide number +. Compared \"none\", adding figure space can ensure numbers remain properly aligned left- right-justified. style_negative string determines style negative numbers: \"hyphen\" (default): preceded standard hypen -, e.g. -1. \"minus\", uses proper Unicode minus symbol. typographical nicety ensures - aligns horizontal bar horizontal bar +. \"parens\", wrapped parentheses, e.g. (1). scale_cut Named numeric vector allows rescale large (small) numbers add prefix. Built-helpers include: cut_short_scale(): [10^3, 10^6) = K, [10^6, 10^9) = M, [10^9, 10^12) = B, [10^12, Inf) = T. cut_long_scale(): [10^3, 10^6) = K, [10^6, 10^12) = M, [10^12, 10^18) = B, [10^18, Inf) = T. cut_si(unit): uses standard SI units. supply vector c(= 100, b = 1000), absolute values range [0, 100) rescaled, absolute values range [100, 1000) divided 100 given suffix \"\", absolute values range [1000, Inf) divided 1000 given suffix \"b\". division creates irrational value (one many digits), cut value tried see improves look final label. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format(). space Add space scale suffix? unit SI unit abbreviation.","code":""},{"path":"https://scales.r-lib.org/dev/reference/number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"A low-level numeric formatter — number","text":"character vector length(x).","code":""},{"path":"https://scales.r-lib.org/dev/reference/number_bytes_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Older interface to label_bytes() — number_bytes_format","title":"Older interface to label_bytes() — number_bytes_format","text":"functions kept backward compatibility, switch label_bytes() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/number_bytes_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Older interface to label_bytes() — number_bytes_format","text":"","code":"number_bytes_format(symbol = \"auto\", units = \"binary\", ...) number_bytes(x, symbol = \"auto\", units = c(\"binary\", \"si\"), accuracy = 1, ...)"},{"path":"https://scales.r-lib.org/dev/reference/number_bytes_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Older interface to label_bytes() — number_bytes_format","text":"symbol byte symbol use. \"auto\" symbol used determined separately value x. Valid symbols \"B\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\" SI units, \"iB\" variants binary units. units unit base use, \"binary\" (1024 base) \"si\" (1000 base)","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":null,"dir":"Reference","previous_headings":"","what":"Out of bounds handling — oob","title":"Out of bounds handling — oob","text":"set functions modify data values outside given range. oob_*() functions designed passed oob argument ggplot2 continuous binned scales, oob_discard exception. functions affect bounds values following ways: oob_censor() replaces bounds values NAs. default oob argument continuous scales. oob_censor_any() acts like oob_censor(), also replaces infinite values NAs. oob_squish() replaces bounds values nearest limit. default oob argument binned scales. oob_squish_any() acts like oob_squish(), also replaces infinite values nearest limit. oob_squish_infinite() replaces infinite values nearest limit. oob_keep() adjust bounds values. position scales, behaves zooming limits without data removal. oob_discard() removes bounds values input. suitable ggplot2 scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Out of bounds handling — oob","text":"","code":"oob_censor(x, range = c(0, 1), only.finite = TRUE) oob_censor_any(x, range = c(0, 1)) oob_discard(x, range = c(0, 1)) oob_squish(x, range = c(0, 1), only.finite = TRUE) oob_squish_any(x, range = c(0, 1)) oob_squish_infinite(x, range = c(0, 1)) oob_keep(x, range = c(0, 1)) censor(x, range = c(0, 1), only.finite = TRUE) discard(x, range = c(0, 1)) squish(x, range = c(0, 1), only.finite = TRUE) squish_infinite(x, range = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Out of bounds handling — oob","text":"x numeric vector values modify. range numeric vector length two giving minimum maximum limit desired output range respectively. .finite logical length one. TRUE, finite values altered. FALSE, also infinite values altered.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Out of bounds handling — oob","text":"oob_() functions return vector numerical values length x argument, wherein bounds values modified. oob_discard() returns vector less equal length x argument.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Out of bounds handling — oob","text":"oob_censor_any() oob_squish_any() functions oob_censor() oob_squish() .finite argument set FALSE. Replacing position values NAs, oob_censor() , typically lead removal datapoints ggplot. Setting ggplot coordinate limits equivalent using oob_keep() position scales.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"old-interface","dir":"Reference","previous_headings":"","what":"Old interface","title":"Out of bounds handling — oob","text":"censor(), squish(), squish_infinite() discard() longer recommended; please use oob_censor(), oob_squish(), oob_squish_infinite() oob_discard() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Out of bounds handling — oob","text":"oob_squish(): Homer Strong homer.strong@gmail.com","code":""},{"path":"https://scales.r-lib.org/dev/reference/oob.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Out of bounds handling — oob","text":"","code":"# Censoring replaces out of bounds values with NAs oob_censor(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] -Inf NA 0.5 1.0 NA NA Inf oob_censor_any(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] NA NA 0.5 1.0 NA NA NA # Squishing replaces out of bounds values with the nearest range limit oob_squish(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] -Inf 0.0 0.5 1.0 1.0 NA Inf oob_squish_any(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] 0.0 0.0 0.5 1.0 1.0 NA 1.0 oob_squish_infinite(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] 0.0 -1.0 0.5 1.0 2.0 NA 1.0 # Keeping does not alter values oob_keep(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] -Inf -1.0 0.5 1.0 2.0 NA Inf # Discarding will remove out of bounds values oob_discard(c(-Inf, -1, 0.5, 1, 2, NA, Inf)) #> [1] 0.5 1.0 NA"},{"path":"https://scales.r-lib.org/dev/reference/ordinal_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_ordinal() — ordinal_format","title":"Superseded interface to label_ordinal() — ordinal_format","text":"functions kept backward compatibility; switch label_ordinal() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/ordinal_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_ordinal() — ordinal_format","text":"","code":"ordinal_format( prefix = \"\", suffix = \"\", big.mark = \" \", rules = ordinal_english(), ... ) ordinal( x, prefix = \"\", suffix = \"\", big.mark = \" \", rules = ordinal_english(), ... )"},{"path":"https://scales.r-lib.org/dev/reference/ordinal_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_ordinal() — ordinal_format","text":"prefix, suffix Symbols display value. big.mark Character used every 3 digits separate thousands. rules Named list regular expressions, matched order. Name gives suffix, value specifies numbers match. ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_area.html","id":null,"dir":"Reference","previous_headings":"","what":"Area palettes (continuous) — pal_area","title":"Area palettes (continuous) — pal_area","text":"Area palettes (continuous)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_area.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Area palettes (continuous) — pal_area","text":"","code":"pal_area(range = c(1, 6)) area_pal(range = c(1, 6)) abs_area(max)"},{"path":"https://scales.r-lib.org/dev/reference/pal_area.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Area palettes (continuous) — pal_area","text":"range Numeric vector length two, giving range possible sizes. greater 0. max number representing maximum size.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":null,"dir":"Reference","previous_headings":"","what":"Colour Brewer palette (discrete) — pal_brewer","title":"Colour Brewer palette (discrete) — pal_brewer","text":"Colour Brewer palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Colour Brewer palette (discrete) — pal_brewer","text":"","code":"pal_brewer(type = \"seq\", palette = 1, direction = 1) brewer_pal(type = \"seq\", palette = 1, direction = 1)"},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Colour Brewer palette (discrete) — pal_brewer","text":"type One \"seq\" (sequential), \"div\" (diverging) \"qual\" (qualitative) palette string, use named palette. number, index list palettes appropriate type direction Sets order colours scale. 1, default, colours output RColorBrewer::brewer.pal(). -1, order colours reversed.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Colour Brewer palette (discrete) — pal_brewer","text":"https://colorbrewer2.org","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_brewer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Colour Brewer palette (discrete) — pal_brewer","text":"","code":"show_col(pal_brewer()(10)) #> Warning: n too large, allowed maximum for palette Blues is 9 #> Returning the palette you asked for with that many colors show_col(pal_brewer(\"div\")(5)) show_col(pal_brewer(palette = \"Greens\")(5)) # Can use with gradient_n to create a continuous gradient cols <- pal_brewer(\"div\")(5) show_col(pal_gradient_n(cols)(seq(0, 1, length.out = 30)))"},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":null,"dir":"Reference","previous_headings":"","what":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"Dichromat (colour-blind) palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"","code":"pal_dichromat(name) dichromat_pal(name)"},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"name Name colour palette. One : BrowntoBlue.10, BrowntoBlue.12, BluetoDarkOrange.12, BluetoDarkOrange.18, DarkRedtoBlue.12, DarkRedtoBlue.18, BluetoGreen.14, BluetoGray.8, BluetoOrangeRed.14, BluetoOrange.10, BluetoOrange.12, BluetoOrange.8, LightBluetoDarkBlue.10, LightBluetoDarkBlue.7, Categorical.12, GreentoMagenta.16, SteppedSequential.5","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_dichromat.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Dichromat (colour-blind) palette (discrete) — pal_dichromat","text":"","code":"if (requireNamespace(\"dichromat\", quietly = TRUE)) { show_col(pal_dichromat(\"BluetoOrange.10\")(10)) show_col(pal_dichromat(\"BluetoOrange.10\")(5)) # Can use with gradient_n to create a continous gradient cols <- pal_dichromat(\"DarkRedtoBlue.12\")(12) show_col(pal_gradient_n(cols)(seq(0, 1, length.out = 30))) }"},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":null,"dir":"Reference","previous_headings":"","what":"Diverging colour gradient (continuous). — pal_div_gradient","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"Diverging colour gradient (continuous).","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"","code":"pal_div_gradient( low = mnsl(\"10B 4/6\"), mid = mnsl(\"N 8/0\"), high = mnsl(\"10R 4/6\"), space = \"Lab\" ) div_gradient_pal( low = mnsl(\"10B 4/6\"), mid = mnsl(\"N 8/0\"), high = mnsl(\"10R 4/6\"), space = \"Lab\" )"},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"low colour low end gradient. mid colour mid point high colour high end gradient. space colour space calculate gradient. Must \"Lab\" - values deprecated.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_div_gradient.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Diverging colour gradient (continuous). — pal_div_gradient","text":"","code":"x <- seq(-1, 1, length.out = 100) r <- sqrt(outer(x^2, x^2, \"+\")) image(r, col = pal_div_gradient()(seq(0, 1, length.out = 12))) image(r, col = pal_div_gradient()(seq(0, 1, length.out = 30))) image(r, col = pal_div_gradient()(seq(0, 1, length.out = 100))) library(munsell) pal <- pal_div_gradient(low = mnsl(complement(\"10R 4/6\"), fix = TRUE)) image(r, col = pal(seq(0, 1, length.out = 100)))"},{"path":"https://scales.r-lib.org/dev/reference/pal_gradient_n.html","id":null,"dir":"Reference","previous_headings":"","what":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","title":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","text":"Arbitrary colour gradient palette (continuous)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_gradient_n.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","text":"","code":"pal_gradient_n(colours, values = NULL, space = \"Lab\") gradient_n_pal(colours, values = NULL, space = \"Lab\")"},{"path":"https://scales.r-lib.org/dev/reference/pal_gradient_n.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Arbitrary colour gradient palette (continuous) — pal_gradient_n","text":"colours vector colours values colours evenly positioned along gradient vector gives position (0 1) colour colours vector. See rescale() convenience function map arbitrary range 0 1. space colour space calculate gradient. Must \"Lab\" - values deprecated.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":null,"dir":"Reference","previous_headings":"","what":"Grey scale palette (discrete) — pal_grey","title":"Grey scale palette (discrete) — pal_grey","text":"Grey scale palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Grey scale palette (discrete) — pal_grey","text":"","code":"pal_grey(start = 0.2, end = 0.8) grey_pal(start = 0.2, end = 0.8)"},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Grey scale palette (discrete) — pal_grey","text":"start grey value low end palette end grey value high end palette","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/pal_grey.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Grey scale palette (discrete) — pal_grey","text":"","code":"show_col(pal_grey()(25)) show_col(pal_grey(0, 1)(25))"},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":null,"dir":"Reference","previous_headings":"","what":"Hue palette (discrete) — pal_hue","title":"Hue palette (discrete) — pal_hue","text":"Hue palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Hue palette (discrete) — pal_hue","text":"","code":"pal_hue(h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1) hue_pal(h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1)"},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Hue palette (discrete) — pal_hue","text":"h range hues use, [0, 360] c chroma (intensity colour), maximum value varies depending combination hue luminance. l luminance (lightness), [0, 100] h.start hue start direction direction travel around colour wheel, 1 = clockwise, -1 = counter-clockwise","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_hue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Hue palette (discrete) — pal_hue","text":"","code":"show_col(pal_hue()(4)) show_col(pal_hue()(9)) show_col(pal_hue(l = 90)(9)) show_col(pal_hue(l = 30)(9)) show_col(pal_hue()(9)) show_col(pal_hue(direction = -1)(9)) show_col(pal_hue(h.start = 30)(9)) show_col(pal_hue(h.start = 90)(9)) show_col(pal_hue()(9)) show_col(pal_hue(h = c(0, 90))(9)) show_col(pal_hue(h = c(90, 180))(9)) show_col(pal_hue(h = c(180, 270))(9)) show_col(pal_hue(h = c(270, 360))(9))"},{"path":"https://scales.r-lib.org/dev/reference/pal_identity.html","id":null,"dir":"Reference","previous_headings":"","what":"Identity palette — pal_identity","title":"Identity palette — pal_identity","text":"Leaves values unchanged - useful data already scaled.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_identity.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Identity palette — pal_identity","text":"","code":"pal_identity() identity_pal()"},{"path":"https://scales.r-lib.org/dev/reference/pal_linetype.html","id":null,"dir":"Reference","previous_headings":"","what":"Line type palette (discrete) — pal_linetype","title":"Line type palette (discrete) — pal_linetype","text":"Based set supplied Richard Pearson, University Manchester","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_linetype.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Line type palette (discrete) — pal_linetype","text":"","code":"pal_linetype() linetype_pal()"},{"path":"https://scales.r-lib.org/dev/reference/pal_manual.html","id":null,"dir":"Reference","previous_headings":"","what":"Manual palette (discrete) — pal_manual","title":"Manual palette (discrete) — pal_manual","text":"Manual palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_manual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Manual palette (discrete) — pal_manual","text":"","code":"pal_manual(values) manual_pal(values)"},{"path":"https://scales.r-lib.org/dev/reference/pal_manual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Manual palette (discrete) — pal_manual","text":"values vector values used palette.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_rescale.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale palette (continuous) — pal_rescale","title":"Rescale palette (continuous) — pal_rescale","text":"Just rescales input specific output range. Useful alpha, size, continuous position.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_rescale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale palette (continuous) — pal_rescale","text":"","code":"pal_rescale(range = c(0.1, 1)) rescale_pal(range = c(0.1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/pal_rescale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale palette (continuous) — pal_rescale","text":"range Numeric vector length two, giving range possible values. 0 1.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":null,"dir":"Reference","previous_headings":"","what":"Sequential colour gradient palette (continuous) — pal_seq_gradient","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"Sequential colour gradient palette (continuous)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"","code":"pal_seq_gradient(low = mnsl(\"10B 4/6\"), high = mnsl(\"10R 4/6\"), space = \"Lab\") seq_gradient_pal(low = mnsl(\"10B 4/6\"), high = mnsl(\"10R 4/6\"), space = \"Lab\")"},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"low colour low end gradient. high colour high end gradient. space colour space calculate gradient. Must \"Lab\" - values deprecated.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_seq_gradient.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Sequential colour gradient palette (continuous) — pal_seq_gradient","text":"","code":"x <- seq(0, 1, length.out = 25) show_col(pal_seq_gradient()(x)) show_col(pal_seq_gradient(\"white\", \"black\")(x)) library(munsell) show_col(pal_seq_gradient(\"white\", mnsl(\"10R 4/6\"))(x))"},{"path":"https://scales.r-lib.org/dev/reference/pal_shape.html","id":null,"dir":"Reference","previous_headings":"","what":"Shape palette (discrete) — pal_shape","title":"Shape palette (discrete) — pal_shape","text":"Shape palette (discrete)","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_shape.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Shape palette (discrete) — pal_shape","text":"","code":"pal_shape(solid = TRUE) shape_pal(solid = TRUE)"},{"path":"https://scales.r-lib.org/dev/reference/pal_shape.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Shape palette (discrete) — pal_shape","text":"solid shapes solid ?","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":null,"dir":"Reference","previous_headings":"","what":"Viridis palette — pal_viridis","title":"Viridis palette — pal_viridis","text":"Viridis palette","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Viridis palette — pal_viridis","text":"","code":"pal_viridis(alpha = 1, begin = 0, end = 1, direction = 1, option = \"D\") viridis_pal(alpha = 1, begin = 0, end = 1, direction = 1, option = \"D\")"},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Viridis palette — pal_viridis","text":"alpha alpha transparency, number [0,1], see argument alpha hsv. begin, end (corrected) hue [0,1] color map begins ends. direction Sets order colors scale. 1, default, colors ordered darkest lightest. -1, order colors reversed. option character string indicating color map option use. Eight options available: \"magma\" (\"\") \"inferno\" (\"B\") \"plasma\" (\"C\") \"viridis\" (\"D\") \"cividis\" (\"E\") \"rocket\" (\"F\") \"mako\" (\"G\") \"turbo\" (\"H\")","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Viridis palette — pal_viridis","text":"https://bids.github.io/colormap/","code":""},{"path":"https://scales.r-lib.org/dev/reference/pal_viridis.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Viridis palette — pal_viridis","text":"","code":"show_col(pal_viridis()(10)) show_col(pal_viridis(direction = -1)(6)) show_col(pal_viridis(begin = 0.2, end = 0.8)(4)) show_col(pal_viridis(option = \"plasma\")(6))"},{"path":"https://scales.r-lib.org/dev/reference/parse_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_parse()/label_math() — parse_format","title":"Superseded interface to label_parse()/label_math() — parse_format","text":"functions kept backward compatibility; switch label_parse()/label_math() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/parse_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_parse()/label_math() — parse_format","text":"","code":"parse_format() math_format(expr = 10^.x, format = force)"},{"path":"https://scales.r-lib.org/dev/reference/parse_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_parse()/label_math() — parse_format","text":"expr expression use format another format function apply prior mathematical transformation - makes easier use floating point numbers mathematical expressions.","code":""},{"path":"https://scales.r-lib.org/dev/reference/percent_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_percent() — percent_format","title":"Superseded interface to label_percent() — percent_format","text":"functions kept backward compatibility; switch label_percent() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/percent_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_percent() — percent_format","text":"","code":"percent_format( accuracy = NULL, scale = 100, prefix = \"\", suffix = \"%\", big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... ) percent( x, accuracy = NULL, scale = 100, prefix = \"\", suffix = \"%\", big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/percent_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_percent() — percent_format","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/pretty_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to breaks_pretty() — pretty_breaks","title":"Superseded interface to breaks_pretty() — pretty_breaks","text":"functions kept backward compatibility; switch breaks_pretty() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pretty_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to breaks_pretty() — pretty_breaks","text":"","code":"pretty_breaks(n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/pretty_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to breaks_pretty() — pretty_breaks","text":"n Desired number breaks. may get slightly fewer breaks requested. ... arguments passed pretty()","code":""},{"path":"https://scales.r-lib.org/dev/reference/pvalue_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_pvalue() — pvalue_format","title":"Superseded interface to label_pvalue() — pvalue_format","text":"functions kept backward compatibility; switch label_pvalue() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/pvalue_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_pvalue() — pvalue_format","text":"","code":"pvalue_format( accuracy = 0.001, decimal.mark = \".\", prefix = NULL, add_p = FALSE ) pvalue(x, accuracy = 0.001, decimal.mark = \".\", prefix = NULL, add_p = FALSE)"},{"path":"https://scales.r-lib.org/dev/reference/pvalue_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_pvalue() — pvalue_format","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. decimal.mark character used indicate numeric decimal point. prefix character vector length 3 giving prefixes put front numbers. default values c(\"<\", \"\", \">\") add_p TRUE c(\"p<\", \"p=\", \"p>\") FALSE. add_p Add \"p=\" value?","code":""},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Minor breaks — regular_minor_breaks","title":"Minor breaks — regular_minor_breaks","text":"Places minor breaks major breaks.","code":""},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minor breaks — regular_minor_breaks","text":"","code":"regular_minor_breaks(reverse = FALSE)"},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minor breaks — regular_minor_breaks","text":"reverse TRUE, calculates minor breaks reversed scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/regular_minor_breaks.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Minor breaks — regular_minor_breaks","text":"","code":"m <- extended_breaks()(c(1, 10)) regular_minor_breaks()(m, c(1, 10), n = 2) #> [1] 0.00 1.25 2.50 3.75 5.00 6.25 7.50 8.75 10.00 n <- extended_breaks()(c(0, -9)) regular_minor_breaks(reverse = TRUE)(n, c(0, -9), n = 2) #> [1] -10.00 -8.75 -7.50 -6.25 -5.00 -3.75 -2.50 -1.25 0.00"},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale continuous vector to have specified minimum and maximum — rescale","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"Rescale continuous vector specified minimum maximum","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"","code":"rescale(x, to, from, ...) # S3 method for numeric rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for dist rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for logical rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for POSIXt rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for Date rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for integer64 rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE), ...) # S3 method for difftime rescale(x, to = c(0, 1), from = range(x, na.rm = TRUE, finite = TRUE), ...) # S3 method for AsIs rescale(x, to, from, ...)"},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"x continuous vector values manipulate. output range (numeric vector length two) input range (vector length two). given, calculated range x ... arguments passed methods","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"Objects class returned unaltered.","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rescale continuous vector to have specified minimum and maximum — rescale","text":"","code":"rescale(1:100) #> [1] 0.00000000 0.01010101 0.02020202 0.03030303 0.04040404 0.05050505 #> [7] 0.06060606 0.07070707 0.08080808 0.09090909 0.10101010 0.11111111 #> [13] 0.12121212 0.13131313 0.14141414 0.15151515 0.16161616 0.17171717 #> [19] 0.18181818 0.19191919 0.20202020 0.21212121 0.22222222 0.23232323 #> [25] 0.24242424 0.25252525 0.26262626 0.27272727 0.28282828 0.29292929 #> [31] 0.30303030 0.31313131 0.32323232 0.33333333 0.34343434 0.35353535 #> [37] 0.36363636 0.37373737 0.38383838 0.39393939 0.40404040 0.41414141 #> [43] 0.42424242 0.43434343 0.44444444 0.45454545 0.46464646 0.47474747 #> [49] 0.48484848 0.49494949 0.50505051 0.51515152 0.52525253 0.53535354 #> [55] 0.54545455 0.55555556 0.56565657 0.57575758 0.58585859 0.59595960 #> [61] 0.60606061 0.61616162 0.62626263 0.63636364 0.64646465 0.65656566 #> [67] 0.66666667 0.67676768 0.68686869 0.69696970 0.70707071 0.71717172 #> [73] 0.72727273 0.73737374 0.74747475 0.75757576 0.76767677 0.77777778 #> [79] 0.78787879 0.79797980 0.80808081 0.81818182 0.82828283 0.83838384 #> [85] 0.84848485 0.85858586 0.86868687 0.87878788 0.88888889 0.89898990 #> [91] 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596 #> [97] 0.96969697 0.97979798 0.98989899 1.00000000 rescale(runif(50)) #> [1] 1.000000000 0.801788402 0.566329958 0.477674366 0.799235843 #> [6] 0.467064916 0.292780220 0.707091824 0.478849566 0.485313645 #> [11] 0.006679436 0.000000000 0.753858548 0.047848086 0.751303985 #> [16] 0.800691254 0.802743043 0.327005752 0.342594704 0.305077580 #> [21] 0.261204709 0.171938702 0.837002442 0.879719716 0.728635154 #> [26] 0.271101572 0.547483437 0.125137635 0.848642139 0.815667560 #> [31] 0.207476519 0.315678604 0.105826554 0.939293085 0.167687665 #> [36] 0.070080688 0.935275055 0.694042384 0.034143383 0.739663455 #> [41] 0.236229687 0.270742788 0.376306072 0.922616630 0.371208908 #> [46] 0.902328213 0.439406461 0.300990519 0.998104964 0.739338462 rescale(1) #> [1] 0.5"},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale numeric vector to have specified maximum — rescale_max","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"Rescale numeric vector specified maximum","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"","code":"rescale_max(x, to = c(0, 1), from = range(x, na.rm = TRUE))"},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"x numeric vector values manipulate. output range (numeric vector length two) input range (numeric vector length two). given, calculated range x","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_max.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rescale numeric vector to have specified maximum — rescale_max","text":"","code":"rescale_max(1:100) #> [1] 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 #> [14] 0.14 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 #> [27] 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 #> [40] 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 #> [53] 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 #> [66] 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 #> [79] 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 #> [92] 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00 rescale_max(runif(50)) #> [1] 0.27369709 0.52698031 1.00000000 0.25597443 0.28244020 0.11857963 #> [7] 0.66147416 0.15135741 0.19339969 0.69845088 0.20719670 0.61727647 #> [13] 0.27482644 0.54161863 0.78982443 0.29105300 0.91559930 0.53704420 #> [19] 0.22163295 0.09992252 0.04028012 0.79419771 0.21113055 0.72906748 #> [25] 0.02359061 0.63699133 0.45191112 0.17360601 0.74575918 0.41085134 #> [31] 0.82922812 0.66481864 0.30209040 0.33313211 0.49910552 0.50825004 #> [37] 0.02186143 0.33980433 0.61787962 0.41238422 0.95225887 0.03933338 #> [43] 0.32927835 0.04756909 0.31867498 0.73505067 0.03616493 0.70026714 #> [49] 0.67621864 0.86392692 rescale_max(1) #> [1] 1"},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":null,"dir":"Reference","previous_headings":"","what":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"Rescale vector specified minimum, midpoint, maximum","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"","code":"rescale_mid(x, to, from, mid, ...) # S3 method for numeric rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for logical rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for dist rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for POSIXt rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid, ...) # S3 method for Date rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid, ...) # S3 method for integer64 rescale_mid(x, to = c(0, 1), from = range(x, na.rm = TRUE), mid = 0, ...) # S3 method for AsIs rescale_mid(x, to, from, ...)"},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"x vector values manipulate. output range (numeric vector length two) input range (vector length two). given, calculated range x mid mid-point input range ... arguments passed methods","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"Objects class returned unaltered.","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_mid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rescale vector to have specified minimum, midpoint, and maximum — rescale_mid","text":"","code":"rescale_mid(1:100, mid = 50.5) #> [1] 0.00000000 0.01010101 0.02020202 0.03030303 0.04040404 0.05050505 #> [7] 0.06060606 0.07070707 0.08080808 0.09090909 0.10101010 0.11111111 #> [13] 0.12121212 0.13131313 0.14141414 0.15151515 0.16161616 0.17171717 #> [19] 0.18181818 0.19191919 0.20202020 0.21212121 0.22222222 0.23232323 #> [25] 0.24242424 0.25252525 0.26262626 0.27272727 0.28282828 0.29292929 #> [31] 0.30303030 0.31313131 0.32323232 0.33333333 0.34343434 0.35353535 #> [37] 0.36363636 0.37373737 0.38383838 0.39393939 0.40404040 0.41414141 #> [43] 0.42424242 0.43434343 0.44444444 0.45454545 0.46464646 0.47474747 #> [49] 0.48484848 0.49494949 0.50505051 0.51515152 0.52525253 0.53535354 #> [55] 0.54545455 0.55555556 0.56565657 0.57575758 0.58585859 0.59595960 #> [61] 0.60606061 0.61616162 0.62626263 0.63636364 0.64646465 0.65656566 #> [67] 0.66666667 0.67676768 0.68686869 0.69696970 0.70707071 0.71717172 #> [73] 0.72727273 0.73737374 0.74747475 0.75757576 0.76767677 0.77777778 #> [79] 0.78787879 0.79797980 0.80808081 0.81818182 0.82828283 0.83838384 #> [85] 0.84848485 0.85858586 0.86868687 0.87878788 0.88888889 0.89898990 #> [91] 0.90909091 0.91919192 0.92929293 0.93939394 0.94949495 0.95959596 #> [97] 0.96969697 0.97979798 0.98989899 1.00000000 rescale_mid(runif(50), mid = 0.5) #> [1] 0.810389535 0.248655241 0.000000000 0.411635867 0.070357797 #> [6] 0.418808298 0.931424801 0.577733122 0.959025607 0.483273479 #> [11] 0.819619058 0.308968339 0.259139803 0.654121593 0.792905088 #> [16] 0.752380867 0.151357830 0.922757853 0.003063467 0.078952394 #> [21] 0.291009603 0.461543533 0.929800523 0.011074909 0.519469129 #> [26] 0.217250708 0.986654286 0.488318061 0.193897185 0.083516717 #> [31] 0.141218707 0.527701932 0.518150206 0.270339823 0.089028950 #> [36] 0.924165329 0.717205570 0.640933923 0.867041029 0.265822223 #> [41] 0.976638900 0.449577554 0.644784558 0.785676055 0.666903616 #> [46] 0.049292305 0.628375465 0.117884626 0.662360485 0.061075299 rescale_mid(1) #> [1] 0.5"},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":null,"dir":"Reference","previous_headings":"","what":"Don't perform rescaling — rescale_none","title":"Don't perform rescaling — rescale_none","text":"perform rescaling","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Don't perform rescaling — rescale_none","text":"","code":"rescale_none(x, ...)"},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Don't perform rescaling — rescale_none","text":"x numeric vector values manipulate. ... arguments ignored","code":""},{"path":"https://scales.r-lib.org/dev/reference/rescale_none.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Don't perform rescaling — rescale_none","text":"","code":"rescale_none(1:100) #> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #> [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #> [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #> [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #> [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 #> [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100"},{"path":"https://scales.r-lib.org/dev/reference/scales-package.html","id":null,"dir":"Reference","previous_headings":"","what":"scales: Scale Functions for Visualization — scales-package","title":"scales: Scale Functions for Visualization — scales-package","text":"Graphical scales map data aesthetics, provide methods automatically determining breaks labels axes legends.","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/scales-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"scales: Scale Functions for Visualization — scales-package","text":"Maintainer: Thomas Lin Pedersen thomas.pedersen@posit.co (ORCID) Authors: Hadley Wickham hadley@posit.co Dana Seidel contributors: Posit, PBC [copyright holder, funder]","code":""},{"path":"https://scales.r-lib.org/dev/reference/scientific_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_scientific() — scientific_format","title":"Superseded interface to label_scientific() — scientific_format","text":"functions kept backward compatibility; switch label_scientific() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/scientific_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_scientific() — scientific_format","text":"","code":"scientific_format( digits = 3, scale = 1, prefix = \"\", suffix = \"\", decimal.mark = \".\", trim = TRUE, ... ) scientific( x, digits = 3, scale = 1, prefix = \"\", suffix = \"\", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/scientific_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_scientific() — scientific_format","text":"digits Number digits show exponent. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix, suffix Symbols display value. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":null,"dir":"Reference","previous_headings":"","what":"Show colours — show_col","title":"Show colours — show_col","text":"quick dirty way show colours plot.","code":""},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Show colours — show_col","text":"","code":"show_col(colours, labels = TRUE, borders = NULL, cex_label = 1, ncol = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Show colours — show_col","text":"colours character vector colours labels Label colour hex name? borders Border colour tile. Default uses par(\"fg\"). Use border = NA omit borders. cex_label Size printed labels, multiplier default size. ncol Number columns. supplied, tries square possible.","code":""},{"path":"https://scales.r-lib.org/dev/reference/show_col.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Show colours — show_col","text":"","code":"show_col(pal_hue()(9)) show_col(pal_hue()(9), borders = NA) show_col(pal_viridis()(16)) show_col(pal_viridis()(16), labels = FALSE)"},{"path":"https://scales.r-lib.org/dev/reference/train_continuous.html","id":null,"dir":"Reference","previous_headings":"","what":"Train (update) a continuous scale — train_continuous","title":"Train (update) a continuous scale — train_continuous","text":"Strips attributes always returns numeric vector","code":""},{"path":"https://scales.r-lib.org/dev/reference/train_continuous.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Train (update) a continuous scale — train_continuous","text":"","code":"train_continuous(new, existing = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/train_continuous.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Train (update) a continuous scale — train_continuous","text":"new New data add scale existing Optional existing scale update","code":""},{"path":"https://scales.r-lib.org/dev/reference/train_discrete.html","id":null,"dir":"Reference","previous_headings":"","what":"Train (update) a discrete scale — train_discrete","title":"Train (update) a discrete scale — train_discrete","text":"Train (update) discrete scale","code":""},{"path":"https://scales.r-lib.org/dev/reference/train_discrete.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Train (update) a discrete scale — train_discrete","text":"","code":"train_discrete(new, existing = NULL, drop = FALSE, na.rm = FALSE, fct = NA)"},{"path":"https://scales.r-lib.org/dev/reference/train_discrete.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Train (update) a discrete scale — train_discrete","text":"new New data add scale existing Optional existing scale update drop TRUE, drop factor levels associated data na.rm TRUE, remove missing values fct Treat existing came factor (ie. sort range)","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":null,"dir":"Reference","previous_headings":"","what":"Pretty breaks on transformed scale — trans_breaks","title":"Pretty breaks on transformed scale — trans_breaks","text":"often produce attractive breaks.","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pretty breaks on transformed scale — trans_breaks","text":"","code":"trans_breaks(trans, inv, n = 5, ...)"},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pretty breaks on transformed scale — trans_breaks","text":"trans function single variable, x, given numeric vector returns transformed values inv inverse transformation function n desired number ticks ... arguments passed pretty","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_breaks.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Pretty breaks on transformed scale — trans_breaks","text":"","code":"trans_breaks(\"log10\", function(x) 10^x)(c(1, 1e6)) #> [1] 1e+00 1e+01 1e+02 1e+03 1e+04 1e+05 1e+06 trans_breaks(\"sqrt\", function(x) x^2)(c(1, 100)) #> [1] 0 4 16 36 64 100 trans_breaks(function(x) 1 / x, function(x) 1 / x)(c(1, 100)) #> [1] Inf 5.000000 2.500000 1.666667 1.250000 1.000000 trans_breaks(function(x) -x, function(x) -x)(c(1, 100)) #> [1] 100 80 60 40 20 0"},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Format labels after transformation — trans_format","text":"","code":"trans_format(trans, format = scientific_format())"},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Format labels after transformation — trans_format","text":"trans transformation apply format additional formatter apply transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Format labels after transformation — trans_format","text":"function single parameter x, numeric vector, returns character vector list expressions","code":""},{"path":"https://scales.r-lib.org/dev/reference/trans_format.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Format labels after transformation — trans_format","text":"","code":"tf <- trans_format(\"log10\", scientific_format()) tf(10^1:6) #> [1] \"1.00e+00\" \"9.54e-01\" \"9.03e-01\" \"8.45e-01\" \"7.78e-01\""},{"path":"https://scales.r-lib.org/dev/reference/transform_asinh.html","id":null,"dir":"Reference","previous_headings":"","what":"Inverse Hyperbolic Sine transformation — transform_asinh","title":"Inverse Hyperbolic Sine transformation — transform_asinh","text":"Inverse Hyperbolic Sine transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_asinh.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Inverse Hyperbolic Sine transformation — transform_asinh","text":"","code":"transform_asinh() asinh_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_asinh.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Inverse Hyperbolic Sine transformation — transform_asinh","text":"","code":"plot(transform_asinh(), xlim = c(-1e2, 1e2))"},{"path":"https://scales.r-lib.org/dev/reference/transform_asn.html","id":null,"dir":"Reference","previous_headings":"","what":"Arc-sin square root transformation — transform_asn","title":"Arc-sin square root transformation — transform_asn","text":"variance stabilising transformation binomial distribution.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_asn.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arc-sin square root transformation — transform_asn","text":"","code":"transform_asn() asn_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_asn.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Arc-sin square root transformation — transform_asn","text":"","code":"plot(transform_asn(), xlim = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_atanh.html","id":null,"dir":"Reference","previous_headings":"","what":"Arc-tangent transformation — transform_atanh","title":"Arc-tangent transformation — transform_atanh","text":"Arc-tangent transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_atanh.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Arc-tangent transformation — transform_atanh","text":"","code":"transform_atanh() atanh_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_atanh.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Arc-tangent transformation — transform_atanh","text":"","code":"plot(transform_atanh(), xlim = c(-1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":null,"dir":"Reference","previous_headings":"","what":"Box-Cox & modulus transformations — transform_boxcox","title":"Box-Cox & modulus transformations — transform_boxcox","text":"Box-Cox transformation flexible transformation, often used transform data towards normality. modulus transformation generalises Box-Cox also work negative values.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Box-Cox & modulus transformations — transform_boxcox","text":"","code":"transform_boxcox(p, offset = 0) boxcox_trans(p, offset = 0) transform_modulus(p, offset = 1) modulus_trans(p, offset = 1)"},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Box-Cox & modulus transformations — transform_boxcox","text":"p Transformation exponent, \\(\\lambda\\). offset Constant offset. 0 Box-Cox type 1, otherwise non-negative constant (Box-Cox type 2). transform_modulus() sets default 1.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Box-Cox & modulus transformations — transform_boxcox","text":"Box-Cox power transformation (type 1) requires strictly positive values takes following form y > 0: $$y^{(\\lambda)} = \\frac{y^\\lambda - 1}{\\lambda}$$ y = 0, natural log transform used. modulus transformation implements generalisation Box-Cox transformation works data positive negative values. equation takes following forms, y != 0 : $$y^{(\\lambda)} = sign(y) * \\frac{(|y| + 1)^\\lambda - 1}{\\lambda}$$ y = 0: $$y^{(\\lambda)} = sign(y) * \\ln(|y| + 1)$$","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Box-Cox & modulus transformations — transform_boxcox","text":"Box, G. E., & Cox, D. R. (1964). analysis transformations. Journal Royal Statistical Society. Series B (Methodological), 211-252. https://www.jstor.org/stable/2984418 John, J. ., & Draper, N. R. (1980). alternative family transformations. Applied Statistics, 190-197. https://www.jstor.org/stable/2986305","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/reference/transform_boxcox.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Box-Cox & modulus transformations — transform_boxcox","text":"","code":"plot(transform_boxcox(-1), xlim = c(0, 10)) plot(transform_boxcox(0), xlim = c(0, 10)) plot(transform_boxcox(1), xlim = c(0, 10)) plot(transform_boxcox(2), xlim = c(0, 10)) plot(transform_modulus(-1), xlim = c(-10, 10)) plot(transform_modulus(0), xlim = c(-10, 10)) plot(transform_modulus(1), xlim = c(-10, 10)) plot(transform_modulus(2), xlim = c(-10, 10))"},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":null,"dir":"Reference","previous_headings":"","what":"Compose two or more transformations together — transform_compose","title":"Compose two or more transformations together — transform_compose","text":"transformer provides general mechanism composing two transformers together. important use case combine reverse transformations.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compose two or more transformations together — transform_compose","text":"","code":"transform_compose(...) compose_trans(...)"},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compose two or more transformations together — transform_compose","text":"... One transformers, either specified string individual transformer objects.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_compose.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compose two or more transformations together — transform_compose","text":"","code":"demo_continuous(10^c(-2:4), trans = \"log10\", labels = label_log()) #> scale_x_continuous(trans = \"log10\", labels = label_log()) demo_continuous(10^c(-2:4), trans = c(\"log10\", \"reverse\"), labels = label_log()) #> scale_x_continuous(trans = c(\"log10\", \"reverse\"), labels = label_log())"},{"path":"https://scales.r-lib.org/dev/reference/transform_date.html","id":null,"dir":"Reference","previous_headings":"","what":"Transformation for dates (class Date) — transform_date","title":"Transformation for dates (class Date) — transform_date","text":"Transformation dates (class Date)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_date.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transformation for dates (class Date) — transform_date","text":"","code":"transform_date() date_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_date.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transformation for dates (class Date) — transform_date","text":"","code":"years <- seq(as.Date(\"1910/1/1\"), as.Date(\"1999/1/1\"), \"years\") t <- transform_date() t$transform(years) #> [1] -21915 -21550 -21185 -20819 -20454 -20089 -19724 -19358 -18993 -18628 #> [11] -18263 -17897 -17532 -17167 -16802 -16436 -16071 -15706 -15341 -14975 #> [21] -14610 -14245 -13880 -13514 -13149 -12784 -12419 -12053 -11688 -11323 #> [31] -10958 -10592 -10227 -9862 -9497 -9131 -8766 -8401 -8036 -7670 #> [41] -7305 -6940 -6575 -6209 -5844 -5479 -5114 -4748 -4383 -4018 #> [51] -3653 -3287 -2922 -2557 -2192 -1826 -1461 -1096 -731 -365 #> [61] 0 365 730 1096 1461 1826 2191 2557 2922 3287 #> [71] 3652 4018 4383 4748 5113 5479 5844 6209 6574 6940 #> [81] 7305 7670 8035 8401 8766 9131 9496 9862 10227 10592 t$inverse(t$transform(years)) #> [1] \"1910-01-01\" \"1911-01-01\" \"1912-01-01\" \"1913-01-01\" \"1914-01-01\" #> [6] \"1915-01-01\" \"1916-01-01\" \"1917-01-01\" \"1918-01-01\" \"1919-01-01\" #> [11] \"1920-01-01\" \"1921-01-01\" \"1922-01-01\" \"1923-01-01\" \"1924-01-01\" #> [16] \"1925-01-01\" \"1926-01-01\" \"1927-01-01\" \"1928-01-01\" \"1929-01-01\" #> [21] \"1930-01-01\" \"1931-01-01\" \"1932-01-01\" \"1933-01-01\" \"1934-01-01\" #> [26] \"1935-01-01\" \"1936-01-01\" \"1937-01-01\" \"1938-01-01\" \"1939-01-01\" #> [31] \"1940-01-01\" \"1941-01-01\" \"1942-01-01\" \"1943-01-01\" \"1944-01-01\" #> [36] \"1945-01-01\" \"1946-01-01\" \"1947-01-01\" \"1948-01-01\" \"1949-01-01\" #> [41] \"1950-01-01\" \"1951-01-01\" \"1952-01-01\" \"1953-01-01\" \"1954-01-01\" #> [46] \"1955-01-01\" \"1956-01-01\" \"1957-01-01\" \"1958-01-01\" \"1959-01-01\" #> [51] \"1960-01-01\" \"1961-01-01\" \"1962-01-01\" \"1963-01-01\" \"1964-01-01\" #> [56] \"1965-01-01\" \"1966-01-01\" \"1967-01-01\" \"1968-01-01\" \"1969-01-01\" #> [61] \"1970-01-01\" \"1971-01-01\" \"1972-01-01\" \"1973-01-01\" \"1974-01-01\" #> [66] \"1975-01-01\" \"1976-01-01\" \"1977-01-01\" \"1978-01-01\" \"1979-01-01\" #> [71] \"1980-01-01\" \"1981-01-01\" \"1982-01-01\" \"1983-01-01\" \"1984-01-01\" #> [76] \"1985-01-01\" \"1986-01-01\" \"1987-01-01\" \"1988-01-01\" \"1989-01-01\" #> [81] \"1990-01-01\" \"1991-01-01\" \"1992-01-01\" \"1993-01-01\" \"1994-01-01\" #> [86] \"1995-01-01\" \"1996-01-01\" \"1997-01-01\" \"1998-01-01\" \"1999-01-01\" t$format(t$breaks(range(years))) #> [1] \"1900\" \"1920\" \"1940\" \"1960\" \"1980\" \"2000\""},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential transformation (inverse of log transformation) — transform_exp","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"Exponential transformation (inverse log transformation)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"","code":"transform_exp(base = exp(1)) exp_trans(base = exp(1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"base Base logarithm","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_exp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential transformation (inverse of log transformation) — transform_exp","text":"","code":"plot(transform_exp(0.5), xlim = c(-2, 2)) plot(transform_exp(1), xlim = c(-2, 2)) plot(transform_exp(2), xlim = c(-2, 2)) plot(transform_exp(), xlim = c(-2, 2))"},{"path":"https://scales.r-lib.org/dev/reference/transform_identity.html","id":null,"dir":"Reference","previous_headings":"","what":"Identity transformation (do nothing) — transform_identity","title":"Identity transformation (do nothing) — transform_identity","text":"Identity transformation (nothing)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_identity.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Identity transformation (do nothing) — transform_identity","text":"","code":"transform_identity() identity_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_identity.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Identity transformation (do nothing) — transform_identity","text":"","code":"plot(transform_identity(), xlim = c(-1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":null,"dir":"Reference","previous_headings":"","what":"Log transformations — transform_log","title":"Log transformations — transform_log","text":"transform_log(): log(x) log1p(): log(x + 1) transform_pseudo_log(): smoothly transition linear scale around 0.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log transformations — transform_log","text":"","code":"transform_log(base = exp(1)) transform_log10() transform_log2() transform_log1p() log_trans(base = exp(1)) log10_trans() log2_trans() log1p_trans() transform_pseudo_log(sigma = 1, base = exp(1)) pseudo_log_trans(sigma = 1, base = exp(1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log transformations — transform_log","text":"base base logarithm sigma Scaling factor linear part pseudo-log transformation.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_log.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Log transformations — transform_log","text":"","code":"plot(transform_log2(), xlim = c(0, 5)) plot(transform_log(), xlim = c(0, 5)) plot(transform_log10(), xlim = c(0, 5)) plot(transform_log(), xlim = c(0, 2)) plot(transform_log1p(), xlim = c(-1, 1)) # The pseudo-log is defined for all real numbers plot(transform_pseudo_log(), xlim = c(-5, 5)) lines(transform_log(), xlim = c(0, 5), col = \"red\") # For large positives numbers it's very close to log plot(transform_pseudo_log(), xlim = c(1, 20)) lines(transform_log(), xlim = c(1, 20), col = \"red\")"},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":null,"dir":"Reference","previous_headings":"","what":"Probability transformation — transform_probability","title":"Probability transformation — transform_probability","text":"Probability transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Probability transformation — transform_probability","text":"","code":"transform_probability(distribution, ...) transform_logit() transform_probit() probability_trans(distribution, ...) logit_trans() probit_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Probability transformation — transform_probability","text":"distribution probability distribution. standard R abbreviation \"p\" + distribution valid cumulative distribution function, \"q\" + distribution valid quantile function, \"d\" + distribution valid probability density function. ... arguments passed distribution quantile functions","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_probability.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Probability transformation — transform_probability","text":"","code":"plot(transform_logit(), xlim = c(0, 1)) plot(transform_probit(), xlim = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_reciprocal.html","id":null,"dir":"Reference","previous_headings":"","what":"Reciprocal transformation — transform_reciprocal","title":"Reciprocal transformation — transform_reciprocal","text":"Reciprocal transformation","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_reciprocal.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reciprocal transformation — transform_reciprocal","text":"","code":"transform_reciprocal() reciprocal_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_reciprocal.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reciprocal transformation — transform_reciprocal","text":"","code":"plot(transform_reciprocal(), xlim = c(0, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_reverse.html","id":null,"dir":"Reference","previous_headings":"","what":"Reverse transformation — transform_reverse","title":"Reverse transformation — transform_reverse","text":"reversing transformation works multiplying input -1. means reverse transformation easily composed transformations require positive input unless reversing done final step.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_reverse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reverse transformation — transform_reverse","text":"","code":"transform_reverse() reverse_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_reverse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reverse transformation — transform_reverse","text":"","code":"plot(transform_reverse(), xlim = c(-1, 1))"},{"path":"https://scales.r-lib.org/dev/reference/transform_sqrt.html","id":null,"dir":"Reference","previous_headings":"","what":"Square-root transformation — transform_sqrt","title":"Square-root transformation — transform_sqrt","text":"variance stabilising transformation Poisson distribution.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_sqrt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Square-root transformation — transform_sqrt","text":"","code":"transform_sqrt() sqrt_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_sqrt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Square-root transformation — transform_sqrt","text":"","code":"plot(transform_sqrt(), xlim = c(0, 5))"},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":null,"dir":"Reference","previous_headings":"","what":"Transformation for date-times (class POSIXt) — transform_time","title":"Transformation for date-times (class POSIXt) — transform_time","text":"Transformation date-times (class POSIXt)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transformation for date-times (class POSIXt) — transform_time","text":"","code":"transform_time(tz = NULL) time_trans(tz = NULL)"},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transformation for date-times (class POSIXt) — transform_time","text":"tz Optionally supply time zone. NULL, default, time zone extracted first input non-null tz.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_time.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transformation for date-times (class POSIXt) — transform_time","text":"","code":"hours <- seq(ISOdate(2000, 3, 20, tz = \"\"), by = \"hour\", length.out = 10) t <- transform_time() t$transform(hours) #> [1] 953553600 953557200 953560800 953564400 953568000 953571600 953575200 #> [8] 953578800 953582400 953586000 t$inverse(t$transform(hours)) #> [1] \"2000-03-20 12:00:00 UTC\" \"2000-03-20 13:00:00 UTC\" #> [3] \"2000-03-20 14:00:00 UTC\" \"2000-03-20 15:00:00 UTC\" #> [5] \"2000-03-20 16:00:00 UTC\" \"2000-03-20 17:00:00 UTC\" #> [7] \"2000-03-20 18:00:00 UTC\" \"2000-03-20 19:00:00 UTC\" #> [9] \"2000-03-20 20:00:00 UTC\" \"2000-03-20 21:00:00 UTC\" t$format(t$breaks(range(hours))) #> [1] \"12:00\" \"15:00\" \"18:00\" \"21:00\""},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":null,"dir":"Reference","previous_headings":"","what":"Transformation for times (class hms) — transform_timespan","title":"Transformation for times (class hms) — transform_timespan","text":"transform_timespan() provides transformations data encoding time passed along breaks label formatting showing standard unit time fitting range data. transform_hms() provides using standard hms idioms formatting.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transformation for times (class hms) — transform_timespan","text":"","code":"transform_timespan(unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\")) timespan_trans(unit = c(\"secs\", \"mins\", \"hours\", \"days\", \"weeks\")) transform_hms() hms_trans()"},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transformation for times (class hms) — transform_timespan","text":"unit unit used interpret numeric input","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_timespan.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transformation for times (class hms) — transform_timespan","text":"","code":"# transform_timespan allows you to specify the time unit numeric data is # interpreted in trans_min <- transform_timespan(\"mins\") demo_timespan(seq(0, 100), trans = trans_min) #> scale_x_continuous(trans = trans_min) # Input already in difftime format is interpreted correctly demo_timespan(as.difftime(seq(0, 100), units = \"secs\"), trans = trans_min) #> scale_x_continuous(trans = trans_min) if (require(\"hms\")) { # transform_hms always assumes seconds hms <- round(runif(10) * 86400) t <- transform_hms() t$transform(hms) t$inverse(t$transform(hms)) t$breaks(hms) # The break labels also follow the hms format demo_timespan(hms, trans = t) } #> Loading required package: hms #> scale_x_continuous(trans = t)"},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":null,"dir":"Reference","previous_headings":"","what":"Yeo-Johnson transformation — transform_yj","title":"Yeo-Johnson transformation — transform_yj","text":"Yeo-Johnson transformation flexible transformation similar Box-Cox, transform_boxcox(), require input values greater zero.","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Yeo-Johnson transformation — transform_yj","text":"","code":"transform_yj(p) yj_trans(p)"},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Yeo-Johnson transformation — transform_yj","text":"p Transformation exponent, \\(\\lambda\\).","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Yeo-Johnson transformation — transform_yj","text":"transformation takes one four forms depending values y \\(\\lambda\\). \\(y \\ge 0\\) \\(\\lambda \\neq 0\\) : \\(y^{(\\lambda)} = \\frac{(y + 1)^\\lambda - 1}{\\lambda}\\) \\(y \\ge 0\\) \\(\\lambda = 0\\): \\(y^{(\\lambda)} = \\ln(y + 1)\\) \\(y < 0\\) \\(\\lambda \\neq 2\\): \\(y^{(\\lambda)} = -\\frac{(-y + 1)^{(2 - \\lambda)} - 1}{2 - \\lambda}\\) \\(y < 0\\) \\(\\lambda = 2\\): \\(y^{(\\lambda)} = -\\ln(-y + 1)\\)","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Yeo-Johnson transformation — transform_yj","text":"Yeo, ., & Johnson, R. (2000). New Family Power Transformations Improve Normality Symmetry. Biometrika, 87(4), 954-959. https://www.jstor.org/stable/2673623","code":""},{"path":"https://scales.r-lib.org/dev/reference/transform_yj.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Yeo-Johnson transformation — transform_yj","text":"","code":"plot(transform_yj(-1), xlim = c(-10, 10)) plot(transform_yj(0), xlim = c(-10, 10)) plot(transform_yj(1), xlim = c(-10, 10)) plot(transform_yj(2), xlim = c(-10, 10))"},{"path":"https://scales.r-lib.org/dev/reference/trim_to_domain.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute range of transformed values — trim_to_domain","title":"Compute range of transformed values — trim_to_domain","text":"Silently drops ranges outside domain transform.","code":""},{"path":"https://scales.r-lib.org/dev/reference/trim_to_domain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute range of transformed values — trim_to_domain","text":"","code":"trim_to_domain(transform, x) trans_range(transform, x)"},{"path":"https://scales.r-lib.org/dev/reference/trim_to_domain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute range of transformed values — trim_to_domain","text":"transform transformation object, name transformation object given string. x numeric vector compute range ","code":""},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Unit labels — unit_format","title":"Unit labels — unit_format","text":"function kept backward compatiblity; either use label_number() label_number_si() instead.","code":""},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unit labels — unit_format","text":"","code":"unit_format( accuracy = NULL, scale = 1, prefix = \"\", unit = \"m\", sep = \" \", suffix = paste0(sep, unit), big.mark = \" \", decimal.mark = \".\", trim = TRUE, ... )"},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unit labels — unit_format","text":"accuracy number round . Use (e.g.) 0.01 show 2 decimal places precision. NULL, default, uses heuristic ensure breaks minimum number digits needed show difference adjacent values. Applied rescaled data. scale scaling factor: x multiplied scale formatting. useful underlying data small large. prefix Additional text display number. suffix applied absolute value style_positive style_negative processed prefix = \"$\" yield (e.g.) -$1 ($1). unit units append. sep separator number unit label. suffix Additional text display number. big.mark Character used every 3 digits separate thousands. decimal.mark character used indicate numeric decimal point. trim Logical, FALSE, values right-justified common width (see base::format()). ... arguments passed base::format().","code":""},{"path":"https://scales.r-lib.org/dev/reference/unit_format.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Unit labels — unit_format","text":"","code":"# Label with units demo_continuous(c(0, 1), labels = unit_format(unit = \"m\")) #> scale_x_continuous(labels = unit_format(unit = \"m\")) # Labels in kg, but original data in g km <- unit_format(unit = \"km\", scale = 1e-3, digits = 2) demo_continuous(c(0, 2500), labels = km) #> scale_x_continuous(labels = km)"},{"path":"https://scales.r-lib.org/dev/reference/wrap_format.html","id":null,"dir":"Reference","previous_headings":"","what":"Superseded interface to label_wrap() — wrap_format","title":"Superseded interface to label_wrap() — wrap_format","text":"functions kept backward compatibility; switch label_wrap() new code.","code":""},{"path":"https://scales.r-lib.org/dev/reference/wrap_format.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Superseded interface to label_wrap() — wrap_format","text":"","code":"wrap_format(width)"},{"path":"https://scales.r-lib.org/dev/reference/wrap_format.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Superseded interface to label_wrap() — wrap_format","text":"width Number characters per line.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"machine epsilon difference 1.0 next number can represented machine. default, function uses epsilon * 1000 tolerance. First scales values mean 1, checks difference larger tolerance.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"","code":"zero_range(x, tol = 1000 * .Machine$double.eps)"},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"x numeric range: vector length 2 tol value specifying tolerance.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"logical TRUE relative difference endpoints range distinguishable 0.","code":""},{"path":"https://scales.r-lib.org/dev/reference/zero_range.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine if range of vector is close to zero, with a specified tolerance — zero_range","text":"","code":"eps <- .Machine$double.eps zero_range(c(1, 1 + eps)) #> [1] TRUE zero_range(c(1, 1 + 99 * eps)) #> [1] TRUE zero_range(c(1, 1 + 1001 * eps)) #> [1] FALSE zero_range(c(1, 1 + 2 * eps), tol = eps) #> [1] FALSE # Scaling up or down all the values has no effect since the values # are rescaled to 1 before checking against tol zero_range(100000 * c(1, 1 + eps)) #> [1] TRUE zero_range(100000 * c(1, 1 + 1001 * eps)) #> [1] FALSE zero_range(.00001 * c(1, 1 + eps)) #> [1] TRUE zero_range(.00001 * c(1, 1 + 1001 * eps)) #> [1] FALSE # NA values zero_range(c(1, NA)) # NA #> [1] NA zero_range(c(1, NaN)) # NA #> [1] NA # Infinite values zero_range(c(1, Inf)) # FALSE #> [1] FALSE zero_range(c(-Inf, Inf)) # FALSE #> [1] FALSE zero_range(c(Inf, Inf)) # TRUE #> [1] TRUE"},{"path":[]},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"better-type-support-development-version","dir":"Changelog","previous_headings":"","what":"Better type support","title":"scales (development version)","text":"rescale((x), ...) rescale_mid((x), ...) return (x) unaltered (@teunbrand, #403). Add rescale method difftime objects (#382) Add better support difftime objects. label_timespan() adds functionality adding correct unit suffix timespan data, breaks_timespan() adds functionality finding pleasant breakpoints across various bases time units, transform_timespan() wraps together provides alternative transform_hms() (#212)","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"ranges-development-version","dir":"Changelog","previous_headings":"","what":"Ranges","title":"scales (development version)","text":"train_continuous() coerces new numeric calculating range (@teunbrand, #369). Training factor data longer sorts range multiple training passes new fct argument train_discrete() used (#383) DiscreteRange class now keeps track whether trained factor data. Attempt make sort behavior range consistent character vectors training. Mixing character factor data make factor level order take precedence matter training starts charactor vector","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"transformations-development-version","dir":"Changelog","previous_headings":"","what":"Transformations","title":"scales (development version)","text":"Transformation function renamed transform_*-prefixed names instead *_trans-suffixed names. allows better tab-completion search transformations. S3 class transformations renamed \"trans\" \"transform\". new_transform() replaces trans_new() trim_to_domain() replaces trans_range(). old functions kept posterity. transform_sqrt() longer returns inverse values outside domain (#214) Add inverse (area) hyperbolic sine transformation transform_asinh(), provides logarithm-like transformation space, accommodates negative values (#297) Correct domain calculation transform_compose() (@mjskay, #408). Transformation objects can optionally include derivatives transform inverse transform (@mjskay, #322).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"misc-development-version","dir":"Changelog","previous_headings":"","what":"Misc","title":"scales (development version)","text":"scale_cut argument number() now works advertised values lowest cut value (#346) scale_cut now choose appropriate cut case first cut creating irrational-ish number. Added new option style_positive argument label_*() functions. Setting \"space\" add figure space front number make easier align positive negative values figure space takes amount space - (#366) label_dollar() superseeded label_currency() clarity (#344) Palette functions now pal_-prefix. old _pal-suffixed versions kept backward compatibility.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-121","dir":"Changelog","previous_headings":"","what":"scales 1.2.1","title":"scales 1.2.1","text":"CRAN release: 2022-08-19 Re-document fix HTML issues .Rd.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-120","dir":"Changelog","previous_headings":"","what":"scales 1.2.0","title":"scales 1.2.0","text":"CRAN release: 2022-04-13","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"new-features-1-2-0","dir":"Changelog","previous_headings":"","what":"New features","title":"scales 1.2.0","text":"label_number(): New style_positive style_negative argument control positive negative numbers styled (#249, #262). prefix comes negative sign, rather , yielding (e.g) correct -$1 instead $-1. New scale_cut argument enables independent scaling different parts range. useful label_dollar() support scaling large numbers suffix (e.g. “M” million, “B” billion). can used cut_short_scale() billion = thousand million cut_long_scale() billion = million million (initial implementation provided @davidchall). Additionally, accuracy now computed per scale category, rescaled values can different numbers decimal places (#339). label_number_si() deprecated previously used short scale abbreviations instead correct SI prefixes. can mimic previous results label_number(scale_cut = cut_scale_short()) get real SI labels label_number(scale_cut = cut_SI(\"m\")) (#339, help @davidchall). label_bytes() now correctly accounts scale argument choosing auto units (@davidchall, #235). label_date() label_time() gain locale argument allows set locale used generate day month names (#309). New label_log() displays base superscript exponent, use logarithmic axes (@davidchall, #312). New compose_trans() allows arbitrary composition transformers. mostly easily achieved passing character vector whenever might previously passed name single transformer. example, scale_y_continuous(trans = c(\"log10\", \"reverse\")) create reverse log-10 scale (#287).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"bug-fixes-and-minor-improvements-1-2-0","dir":"Changelog","previous_headings":"","what":"Bug fixes and minor improvements","title":"scales 1.2.0","text":"breaks_width() now supports units like \"3 months\" offset argument. col_quantile() longer errors data sufficiently skewed can’t generate requested number unique colours (#294). dollar(negative_parens) deprecated favour style_negative = \"parens\". hue_pal() respects h.start (#288). label_number_auto() correctly formats single numbers greater 1e+06 without error (@karawoo, #321) manual_pal() now always returns unnamed colour vector, easy use ggplot2::discrete_scale() (@yutannihilation, #284). time_trans() date_trans() domains correct type can transformed without error (#298). Internal precision(), used accuracy = NULL, now avoids displaying unnecessary digits (@davidchall, #304).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-111","dir":"Changelog","previous_headings":"","what":"scales 1.1.1","title":"scales 1.1.1","text":"CRAN release: 2020-05-11 breaks_width() now handles difftime/hms objects (@bhogan-mitre, #244). hue_pal() now correctly inverts color palettes direction = -1 (@dpseidel, #252). Internal precision(), used accuracy = NULL, now better job duplicate values present (@teunbrand, #251). also better job ’s mix finite non-finite values (#257). New oob_keep() keep data outside range, allowing zoom-limits oob_keep used oob argument scales. Existing bounds functions renamed oob_-prefix indicate role (@teunbrand, #255). ordinal_french() gains plural gender arguments (@stephLH, #256).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-110","dir":"Changelog","previous_headings":"","what":"scales 1.1.0","title":"scales 1.1.0","text":"CRAN release: 2019-11-18 Axis breaks labels new naming scheme: functions generate breaks limits called breaks_; functions generate labels breaks called labels_ (#226). breaks labels examples overhauled use new demo_continuous(), demo_discrete(), demo_log10(), can see use scales functions ggplot2.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"labels-1-1-0","dir":"Changelog","previous_headings":"","what":"Labels","title":"scales 1.1.0","text":"label functions preserve names (#202) keep NAs NAs instead trying convert \"NA\" (@clauswilke, #187). New label_bytes() replaces number_bytes_format() convenient interface. takes single unit argument can either SI unit (e.g. “kB”), binary unit (e.g. “kIB”), automatic unit (either “auto_si” “auto_binary”). always uses “B” symbol bytes (#174), checks units valid. Additionally, auto units now used determine symbol separately value (@mikmart): New label_date_short() creates labels date axis show components date changed since previous label. example, Jan 10, Jan 20, Jan 30, Feb 1, label_date_short() use labels Jan 10, 20, 30, Feb 1 (#209). label_dollar() now correctly formats negative numbers (e.g.) -$200 (#216). label_math() now returns expression vector, doesn’t coerce inputs names. label_number() takes scale account computing accuracy, supplied. means label_percent() better default accuracy many cases (#192). label_number() now picks accuracy automatically default. underlying heuristic improved use distance adjacent breaks (rather total range break). New label_number_auto() automatically picks number_format() scientific_format() based range input. produce nice output wide range inputs (@paleolimbot, #208). New label_number_si() formats numeric vectors limited SI units. Individual values scaled labelled abbreviations “K”, “M”, “B”, “T” dependent magnitude (@dpseidel, #83). label_parse() now generates expression object can used display formatted labels ggplot2 (@agila5, #203). label_pvalue() now reports values close 1 (determined accuracy) (e.g.) “>0.99”. can control prefixes used new prefix argument (#213).","code":"label_bytes(\"auto_binary\")(1024^(1:3)) #> [1] \"1 kiB\" \"1 MiB\" \"1 GiB\""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"breaks-1-1-0","dir":"Changelog","previous_headings":"","what":"Breaks","title":"scales 1.1.0","text":"built breaks functions now returns function takes range desired number breaks, making possible overwrite defaults number desired breaks given constructor call (@thomasp85). breaks_log() nicer behaviour finite inputs (#210). also provides usable breaks even small ranges (@billdenney, #168) New breaks_width() allows specify fixed distance breaks (along optional offset).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"transformations-1-1-0","dir":"Changelog","previous_headings":"","what":"Transformations","title":"scales 1.1.0","text":"New yj_trans() implements Yeo-Johnson transformation (@zamorarr, #196) trans objects gets methods plot() lines(), numeric transformations get example showing transformation. boxcox_trans() longer throws error given NA values (@sflippl, #181).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"other-bug-fixes-and-minor-improvements-1-1-0","dir":"Changelog","previous_headings":"","what":"Other bug fixes and minor improvements","title":"scales 1.1.0","text":"scales now uses farver package colour manipulation instead combination grDevices hand-rolled C++ code (#223). alpha() now preserves element names (@wibeasley, #195) ContinuousRange DiscreteRange methods now properly inherit fully mutable (@dpseidel). col_numeric(), col_bin(), col_quantile(), col_factor() now support viridis colors. Just pass palette name (\"magma\", \"inferno\", \"plasma\", \"viridis\") palette argument (@jcheng5, #191). col_numeric(), col_bin(), col_quantile(), col_factor() now reverse parameter, apply color palettes opposite usual order (.e. high--low instead low--high) (@jcheng5, #191). col_bin() col_quantile() now take right argument, passed base::cut(); indicates whether bin/quantile intervals closed right (open left), vice versa (@jcheng5, #191). col_factor() now tries avoid interpolating qualitative RColorBrewer palettes. Instead, attempts assign palette color factor level. Interpolation still used factor levels available colors, warning emitted case (@jcheng5, #191). dichromat_pal() documentation now builds without requiring suggested dichromat package installed (@dpseidel, #172). date_breaks() now supports subsecond intervals (@dpseidel, #85).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-100","dir":"Changelog","previous_headings":"","what":"scales 1.0.0","title":"scales 1.0.0","text":"CRAN release: 2018-08-09","code":""},{"path":[]},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"formatters-1-0-0","dir":"Changelog","previous_headings":"New Features","what":"Formatters","title":"scales 1.0.0","text":"comma_format(), percent_format() unit_format() gain new arguments: accuracy, scale, prefix, suffix, decimal.mark, big.mark (@larmarange, #146). dollar_format() gains new arguments: accuracy, scale, decimal.mark, trim (@larmarange, #148). New number_bytes_format() number_bytes() format numeric vectors byte measurements (@hrbrmstr, @dpseidel). New number_format() provides generic formatter numbers (@larmarange, #142). New pvalue_format() formats p-values (@larmarange, #145). ordinal_format() gains new arguments: prefix, suffix, big.mark, rules; rules French Spanish also provided (@larmarange, #149). scientific_format() gains new arguments: scale, prefix, suffix, decimal.mark, trim (@larmarange, #147). New time_format() formats POSIXt hms objects (@dpseidel, #88).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"transformations--breaks-1-0-0","dir":"Changelog","previous_headings":"New Features","what":"Transformations & breaks","title":"scales 1.0.0","text":"boxcox_trans() now invertible x >= 0 requires positive values. new argument offset allows specification type-1 type-2 Box-Cox transformations (@dpseidel, #103). log_breaks() returns integer multiples integer powers base finer breaks needed (@ThierryO, #117). New function modulus_trans() implements modulus transformation positive negative values (@dpseidel). New pseudo_log_trans() transforming numerics signed logarithmic scale smooth transition linear scale around 0 (@lepennec, #106).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"minor-bug-fixes-and-improvements-1-0-0","dir":"Changelog","previous_headings":"","what":"Minor bug fixes and improvements","title":"scales 1.0.0","text":"scales functions now work expected used inside loop. previous package versions scales function used variable custom parameters inside loop, parameters evaluated end loop, due R lazy evaluation works (@zeehio, #81). colour_ramp() now uses alpha = TRUE default (@clauswilke, #108). date_breaks() now supports subsecond intervals (@dpseidel, #85). Removes dichromat plyr dependencies. dichromat now suggested (@dpseidel, #118). expand_range() arguments mul add now affect scales range 0 (@dpseidel, ggplot2-2281). extended_breaks() now allows user specification labeling::extended() argument .loose permit flexible breaks specification (@dpseidel, #99). New rescale() rescale_mid() methods support dist objects (@zeehio, #105). rescale_mid() now properly handles NAs (@foo-bar-baz-qux, #104).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-050","dir":"Changelog","previous_headings":"","what":"scales 0.5.0","title":"scales 0.5.0","text":"CRAN release: 2017-08-24 New function regular_minor_breaks() calculates minor breaks property transformation (@karawoo). Adds viridis_pal() creating palettes color maps viridisLite package (@karawoo). Switched reference classes R6 (#96). rescale() rescale_mid() now S3 generics, work numeric, Date, POSIXct, POSIXlt bit64::integer64 objects (@zeehio, #74).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-041","dir":"Changelog","previous_headings":"","what":"scales 0.4.1","title":"scales 0.4.1","text":"CRAN release: 2016-11-09 extended_breaks() longer fails pathological inputs. New hms_trans() transforming hms time vectors. train_discrete() gets new na.rm argument controls whether NAs preserved dropped.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-040","dir":"Changelog","previous_headings":"","what":"scales 0.4.0","title":"scales 0.4.0","text":"CRAN release: 2016-02-26 Switched NEWS NEWS.md. manual_pal() produces warning n greater number values palette (@jrnold, #68). precision(0) now returns 1, means percent(0) now returns 0% (#50). scale_continuous() uses correct check numeric values. NaN correctly recognised missing value gradient palettes (ggplot2-1482).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-030","dir":"Changelog","previous_headings":"","what":"scales 0.3.0","title":"scales 0.3.0","text":"CRAN release: 2015-08-25 rescale() preserves missing values input range x (effectively) 0 (ggplot2-985). Continuous colour palettes now use colour_ramp() instead colorRamp(). supports interpolation Lab colour space, hundreds times faster.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-025","dir":"Changelog","previous_headings":"","what":"scales 0.2.5","title":"scales 0.2.5","text":"CRAN release: 2015-06-12","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"improved-formatting-functions-0-2-5","dir":"Changelog","previous_headings":"","what":"Improved formatting functions","title":"scales 0.2.5","text":"date_format() gains option specify time zone (#51). dollar_format() now flexible can add either prefixes suffixes different currencies (#53). gains negative_parens argument show negative values ($100) now passes missing values unchanged (@dougmitarotonda, #40). New ordinal_format() generates ordinal numbers (1st, 2nd, etc) (@aaronwolen, #55). New unit_format() makes easier add units labels, optionally scaling (@ThierryO, #46). New wrap_format() function wrap character vectors desired width. (@jimhester, #37).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"new-colour-scaling-functions-0-2-5","dir":"Changelog","previous_headings":"","what":"New colour scaling functions","title":"scales 0.2.5","text":"New color scaling functions col_numeric(), col_bin(), col_quantile(), col_factor(). functions provide concise ways map continuous categorical values color spectra. New colour_ramp() function performing color interpolation CIELAB color space (like grDevices::colorRamp(space = 'Lab'), much faster).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"other-bug-fixes-and-minor-improvements-0-2-5","dir":"Changelog","previous_headings":"","what":"Other bug fixes and minor improvements","title":"scales 0.2.5","text":"boxcox_trans() returns correct value p close zero (#31). dollar() percent() correctly return zero length string zero length input (@BrianDiggs, #35). brewer_pal() gains direction argument easily invert order colours (@jiho, #36). show_col() additional options showcase colors better (@jiho, #52). Relaxed tolerance zero_range() .Machine$double.eps * 1000 (#33).","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-024","dir":"Changelog","previous_headings":"","what":"scales 0.2.4","title":"scales 0.2.4","text":"CRAN release: 2014-04-22 Eliminate stringr dependency. Fix outstanding errors R CMD check.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-023","dir":"Changelog","previous_headings":"","what":"scales 0.2.3","title":"scales 0.2.3","text":"CRAN release: 2012-12-05 floor_time() calls to_time(), function moved function longer available scales namespace. Now floor_time() copy function (Thanks Stefan Novak). Color palettes generated brewer_pal() longer give warnings fewer 3 colors requested (@wch). abs_area() rescale_max() functions added, scaling area points proportional value. used scale_size_area() ggplot2.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-022","dir":"Changelog","previous_headings":"","what":"scales 0.2.2","title":"scales 0.2.2","text":"CRAN release: 2012-09-04 zero_range() improved behaviour thanks Brian Diggs. brewer_pal() complains give incorrect palette type. (Fixes #15, thanks Jean-Olivier Irisson). shape_pal() warns asked 6 values. (Fixes #16, thanks Jean-Olivier Irisson). time_trans() gains optional argument tz specify time zone use times. specified, guess first input non-null time zone. date_trans() time_trans() now check inputs correct type. prevents ggplot2 scales silently giving incorrect outputs given incorrect inputs. Change default breaks algorithm cbreaks() trans_new(). Previously pretty_breaks(), now ’s extended_breaks(), uses extended() algorithm labeling package. fixed namespace problem fullseq().","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-021","dir":"Changelog","previous_headings":"","what":"scales 0.2.1","title":"scales 0.2.1","text":"CRAN release: 2012-05-08 suppressWarnings train_continuous() zero-row infinite data frames don’t potentially cause problems. check zero-length colour gradient_n_pal(). added extended_breaks() implements extension Wilkinson’s labelling approach, implemented labeling package. generally produce nicer breaks pretty_breaks(). alpha() can now preserve existing alpha values alpha() missing. log_breaks() always gives breaks evenly spaced log scale, never evenly spaced data scale. result really bad breaks ranges (e.g 0.5-0.6), probably shouldn’t using log scales situation anyway.","code":""},{"path":"https://scales.r-lib.org/dev/news/index.html","id":"scales-020","dir":"Changelog","previous_headings":"","what":"scales 0.2.0","title":"scales 0.2.0","text":"CRAN release: 2012-02-27 censor() squish() gain .finite argument default operating finite values. needed ggplot2, reflects use Inf -Inf special values. bounds functions now force evaluation range avoid bug S3 method dispatch inside primitive functions (e.g. [). Simplified algorithm discrete_range() robust stringsAsFactors global option. Now, order factor preserved full factor first object seen, subsequent inputs subsets levels original factor. scientific() ensures output always scientific format specified number significant digits. comma() ensures output never scientific format (Fixes #7). Another tweak zero_range() better detect range zero length (Fixes #6).","code":""}]