Skip to content

Commit

Permalink
v1.8
Browse files Browse the repository at this point in the history
asjadnaqvi committed Oct 16, 2024
1 parent d5db0ab commit f434930
Showing 49 changed files with 100 additions and 82 deletions.
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -3,6 +3,6 @@ authors:
- family-names: "Naqvi"
given-names: "Asjad"
title: "Stata package ``sunburst''"
version: 1.71
date-released: 2024-06-10
version: 1.8
date-released: 2024-10-16
url: "https://github.com/asjadnaqvi/stata-sunburst"
43 changes: 28 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -8,8 +8,8 @@

---

# sunburst v1.71
(10 Jun 2024)
# sunburst v1.8
(16 Oct 2024)

## Installation

@@ -21,31 +21,32 @@ SSC (**v1.71**):
ssc install sunburst, replace
```

GitHub (**v1.71**):
GitHub (**v1.8**):

```
net install sunburst, from("https://raw.githubusercontent.com/asjadnaqvi/stata-sunburst/main/installation/") replace
```

The `palettes` package is required to run this command:

```
```stata
ssc install palettes, replace
ssc install colrspace, replace
ssc install graphfunctions, replace
```

Even if you have these packages installed, please check for updates: `ado update, update`.

If you want to make a clean figure, then it is advisable to load a clean scheme. These are several available and I personally use the following:

```
```stata
ssc install schemepack, replace
set scheme white_tableau
```

I also prefer narrow fonts in figures with long labels. You can change this as follows:

```
```stata
graph set window fontface "Arial Narrow"
```

@@ -58,9 +59,8 @@ The syntax for the latest version is as follows:
sunburst numvar [if] [in], by(variables)
[ radius(numlist) step(num) palette(str) colorby(option) colorvar(var) colorprop fade(num) share
format(str) threshold(num) labcondition(num) labcolor(str) lwidth(numlist)
labsize(numlist) lablayer(numlist) labprop labscale(num) points(num) wrap()
full cfill(str) clcolor(str) clwidth(str) *
]
labsize(numlist) lablayer(numlist) labprop labscale(num) points(num) wrap(num)
full rotate(angle) cfill(str) clcolor(str) clwidth(str) * ]
```

See the help file `help sunburst` for details.
@@ -82,15 +82,15 @@ Software packages take countless hours of programming, testing, and bug fixing.
author = {Naqvi, Asjad},
title = {Stata package ``sunburst''},
url = {https://github.com/asjadnaqvi/stata-sunburst},
version = {1.71},
date = {2024-06-10}
version = {1.8},
date = {2024-10-16}
}
```

*or simple text*

```
Naqvi, A. (2024). Stata package "sunburst" version 1.71. Release date 10 June 2024. https://github.com/asjadnaqvi/stata-sunburst.
Naqvi, A. (2024). Stata package "sunburst" version 1.8. Release date 16 October 2024. https://github.com/asjadnaqvi/stata-sunburst.
```


@@ -392,20 +392,29 @@ sunburst pop if NUTS0=="FR", by(NUTS1 NUTS2) full labprop
<img src="/figures/sunburst27_2.png" width="100%">


### v1.6 center circle fill options
### v1.8: circle fill + rotate

```
sunburst pop if NUTS0=="PT", by(NUTS2 NUTS3) clc(black) lc(black)
```

<img src="/figures/sunburst27_1.png" width="100%">
<img src="/figures/sunburst28_1.png" width="100%">


```
sunburst pop if NUTS0=="PT", by(NUTS2 NUTS3) full clc(black) lc(black)
```

<img src="/figures/sunburst27_2.png" width="100%">
<img src="/figures/sunburst28_2.png" width="100%">


```
sunburst pop if NUTS0=="PT", by(NUTS2 NUTS3) full clc(black) lc(black) rotate(90)
```

<img src="/figures/sunburst29.png" width="100%">




## Feedback
@@ -415,6 +424,10 @@ Please open an [issue](https://github.com/asjadnaqvi/stata-sunburst/issues) to r

## Change log

**v1.8 (16 Oct 2024)**
- Options `wrap()` and `cfill()` now depend on [graphfunctions](https://github.com/asjadnaqvi/stata-graphfunctions) for better figures.
- Added option `rotate()`. This will only work if a full figure is drawn using `full` (requested by Eric Melse).

**v1.71 (07 Feb 2024)**
- Added `wrap()` option for label wrapping.
- Minor code cleanups.
Binary file modified figures/sunburst1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst11.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst12.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst13.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst15_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst17.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst18.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst19.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst20.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst21.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst22.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst23.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst24.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst25_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst25_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst25_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst25_4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst26_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst26_1_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst26_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified figures/sunburst26_3.png
Binary file modified figures/sunburst26_3_1.png
Binary file modified figures/sunburst26_4.png
Binary file modified figures/sunburst26_5.png
Binary file modified figures/sunburst26_5_1.png
Binary file modified figures/sunburst26_6.png
Binary file modified figures/sunburst27_1.png
Binary file modified figures/sunburst27_2.png
Binary file modified figures/sunburst28_1.png
Binary file modified figures/sunburst28_2.png
Binary file added figures/sunburst29.png
Binary file modified figures/sunburst3.png
Binary file modified figures/sunburst4.png
Binary file modified figures/sunburst5.png
Binary file modified figures/sunburst6.png
Binary file modified figures/sunburst7.png
Binary file modified figures/sunburst8.png
Binary file modified figures/sunburst9.png
4 changes: 2 additions & 2 deletions installation/stata.toc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
v 1.71
v 1.8
d 'SUNBURST': A Stata package for half sunburst plots
d
d Distribution-Date: 20240610
d Distribution-Date: 20241016
d
d Asjad Naqvi
d asjadnaqvi@gmail.com
90 changes: 48 additions & 42 deletions installation/sunburst.ado
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
*! sunburst v1.71 (10 Jun 2024)
*! sunburst v1.72 (16 Oct 2024)
*! Asjad Naqvi (asjadnaqvi@gmail.com)

* v1.8 (16 Oct 2024): wrap() is now more flexible. Rotate added with full. cfill now requires shapes.
* v1.71 (10 Jun 2024): added wrap(option)
* v1.7 (07 Feb 2024): fixed a bug where repeat categories were causing misalignment. Change some variables to tempvars
* v1.6 (26 Jan 2024): rewrite of core routines. Added full circle option. Added cfill options.
@@ -30,15 +31,23 @@ program sunburst, sortpreserve
[ LABColor(string) ] /// // v1.3 updates
[ LABLayer(numlist) points(real 100) labprop labscale(real 1) ] /// // v1.4
[ colorvar(string) ] /// // v1.5
[ full cfill(string) CLWidth(string) CLColor(string) wrap(numlist >=0 max=1) * ] // v1.6

[ full cfill(string) CLWidth(string) CLColor(string) * ] /// // v1.6
[ wrap(numlist >=0 max=1) rotate(real 0) ] // v1.7

// check dependencies
cap findfile colorpalette.ado
if _rc != 0 {
display as error "The palettes package is missing. Install the {stata ssc install palettes, replace:palettes} and {stata ssc install colrspace, replace:colrspace} packages."
display as error "The {bf:palettes} package is missing. Install the {stata ssc install palettes, replace:palettes} and {stata ssc install colrspace, replace:colrspace} packages."
exit
}


cap findfile labsplit.ado
if _rc != 0 {
display as error "The {bf:graphfunctions} package is missing. Install the {stata ssc install graphfunctions, replace:graphfunctions}."
exit
}

// check errors

if "`colorby'" != "" {
@@ -64,12 +73,12 @@ program sunburst, sortpreserve
marksample touse, strok


qui {
quietly {
preserve

keep if `touse'
keep `varlist' `by' `colorvar'
drop if `varlist'==. | `varlist'==0 // is this the right thing to do? wait for someone to complain
drop if missing(`varlist') | `varlist'==0 // is this the right thing to do? wait for someone to complain


local switch = 0
@@ -83,11 +92,7 @@ preserve

// check for missing
summ `colorvar', meanonly
replace `colorvar' = r(max) + 1 if `colorvar'==.




replace `colorvar' = r(max) + 1 if missing(`colorvar')
}

//////////////////////
@@ -283,17 +288,20 @@ preserve

local aspect 0.5
local 2pi = 1
local ro = 0

if "`full'" != "" {
local aspect 1
local 2pi = 2
local xsize = 1
local ro = `rotate' * _pi / 180
}


// calculate the shares
forval i = 0/`len' {
gen double share`i' = val`i' / val0 if order`i'!=.
gen double theta`i'_temp = share`i' * `2pi' * _pi
gen double theta`i'_temp = (share`i' * `2pi' * _pi)
gen double theta`i' = .

sum order`i' , meanonly
@@ -310,14 +318,11 @@ preserve
reshape long var val order share theta, i(id *name rank) j(layer) string
destring layer, replace force



sort layer id order
drop if order==.
drop id



replace order = order + 1


@@ -395,21 +400,19 @@ preserve

levelsof order if layer==`z' , local(lvls)

local start = 0 // start of the angle
local start = 0 + `ro' // start of the angle

foreach x of local lvls {

summ theta if order==`x' & layer==`z', meanonly
local end = r(max)
local end = r(max) + `ro'

local delta = (`end' - `start') / (`addobs' - 1)
replace test1 = `start' + `delta' * (seq - 1) if order==`x' & layer==`z' & !inlist(id,1,2)

replace x = `rad`z'' * cos(test1) if x!=0 & order==`x' & layer==`z'
replace y = `rad`z'' * sin(test1) if x!=0 & order==`x' & layer==`z'
replace x = (`rad`z'') * cos(test1) if x!=0 & order==`x' & layer==`z'
replace y = (`rad`z'') * sin(test1) if x!=0 & order==`x' & layer==`z'



local start = `end'

}
@@ -423,23 +426,21 @@ preserve
local items = r(r) - 1


local anglex = 0
local anglex = 0 + `ro'

forval x = 1/`items' {

summ theta if order==`x' & tag==1 & layer==`z', meanonly
local angley = r(mean)
local angley = r(mean) + `ro'

replace angle = (`anglex' + `angley') / 2 if order==`x' & layer==`z' & tag==1
replace xlab = `labrad`z'' * cos(angle) if order==`x' & layer==`z' & tag==1
replace ylab = `labrad`z'' * sin(angle) if order==`x' & layer==`z' & tag==1
replace xlab = (`labrad`z'') * cos(angle) if order==`x' & layer==`z' & tag==1
replace ylab = (`labrad`z'') * sin(angle) if order==`x' & layer==`z' & tag==1

local anglex = `angley'

}



drop if var=="" & layer==`z'
sort layer order id mark0 seq
}
@@ -483,6 +484,7 @@ preserve

cap drop test1

/*
if "`wrap'" != "" {
gen _length = length(varstr) if varstr!= ""
summ _length, meanonly
@@ -493,6 +495,13 @@ preserve
replace varstr = substr(varstr, 1, `wraptag') + "`=char(10)'" + substr(varstr, `=`wraptag' + 1', .) if _length > `wraptag' & _length!=.
}
}
*/

if "`wrap'" != "" {
ren varstr varstr_temp
labsplit varstr_temp, wrap(`wrap') gen(varstr)
drop varstr_temp
}


// generate the quadrants
@@ -514,7 +523,6 @@ preserve
replace angle2 = (angle * (180 / _pi)) - 180 if id==1 & quad==2



***********************
// draw the layers //
***********************
@@ -648,6 +656,8 @@ preserve
}
}



// last layer

local fill = 100 - (5 * `len')
@@ -850,7 +860,6 @@ preserve
summ angle2 if order== `x' & tag==1 & layer==`i', meanonly

local labs `labs' (scatter ylab xlab if order== `x' & layer==`i' & tag==1 `labcon' , mc(none) mlabel(varstr) mlabcolor(`labcolor') mlabangle(`r(mean)') mlabpos(0) mlabsize(`mylabs'))

}
}
}
@@ -861,11 +870,8 @@ preserve

foreach x of local lvls {


if "`labprop'" != "" {

summ share if order== `x' & layer==`len' & tag==1, meanonly

local mylabs = `labs`len'' * sqrt(5 * `r(mean)' ^ `labscale')
}
else {
@@ -886,14 +892,14 @@ preserve
if "`clwidth'" == "" local clwidth 0.2


local ccir (function sqrt(`rad0'^2 - (x)^2), recast(area) fc(`cfill') fi(100) lw(0.15) lc(`cfill') range(-`rad0' `rad0'))
local ccir `ccir' (function sqrt(`rad0'^2 - (x)^2), lw(`clwidth') lc(`clcolor') range(-`rad0' `rad0'))

if "`full'" != "" {
local ccir `ccir' (function -sqrt(`rad0'^2 - (x)^2), recast(area) fc(`cfill') fi(100) lw(0.15) lc(`cfill') range(-`rad0' `rad0'))
local ccir `ccir' (function -sqrt(`rad0'^2 - (x)^2), lw(`clwidth') lc(`clcolor') range(-`rad0' `rad0'))
shape circle, n(500) rad(`rad0') genx(_circx) geny(_circy) genid(_circid) genorder(_circorder) replace
}
else {
shape pie, n(500) end(180) rad(`rad0') genx(_circx) geny(_circy) genid(_circid) genorder(_circorder) replace
}

local ccir (area _circy _circx, fc(`cfill') fi(100) lw(`clwidth') lc(`clcolor'))


*** Final plot
@@ -904,11 +910,11 @@ preserve
`lab`len'' ///
`labs' ///
`ccir' ///
, ///
aspect(`aspect') xsize(`xsize') ysize(`ysize') ///
yscale(off) xscale(off) legend(off) ///
xlabel(-`rad`len'' `rad`len'', nogrid) ylabel(0 `rad`len'', nogrid) ///
`options'
, ///
aspect(`aspect') xsize(`xsize') ysize(`ysize') ///
yscale(off) xscale(off) legend(off) ///
xlabel(-`rad`len'' `rad`len'', nogrid) ylabel(0 `rad`len'', nogrid) ///
`options'


*/
6 changes: 3 additions & 3 deletions installation/sunburst.pkg
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
v 1.71
v 1.8
d {bf:SUNBURST}: A Stata package for sunburst graphs.
d See {bf:help sunburst} after installation.
d
@@ -9,9 +9,9 @@ d KW: graphs
d KW: sunburst
d
d
d Distribution-Date: 20240610
d Distribution-Date: 20241016
d
d This version: 10 Jun 2024
d This version: 16 Oct 2024
d First version: 24 Dec 2022
d License: MIT
d
35 changes: 17 additions & 18 deletions installation/sunburst.sthlp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{smcl}
{* 10Jun2024}{...}
{* 16Oct2024}{...}
{hi:help sunburst}{...}
{right:{browse "https://github.com/asjadnaqvi/stata-sunburst":sunburst v1.71 (GitHub)}}
{right:{browse "https://github.com/asjadnaqvi/stata-sunburst":sunburst v1.8 (GitHub)}}

{hline}

@@ -17,9 +17,8 @@ The command is based on the following guide on Medium: {browse "https://medium.c
{cmd:sunburst} {it:numvar} {ifin}, {cmd:by}({it:variables})
{cmd:[} {cmdab:rad:ius}({it:numlist}) {cmd:step}({it:num}) {cmd:palette}({it:str}) {cmd:colorby}({it:option}) {cmd:colorvar}({it:var}) {cmd:colorprop} {cmd:fade}({it:num}) {cmd:share}
{cmd:format}({it:str}) {cmdab:thresh:old}({it:num}) {cmdab:labcond:ition}({it:num}) {cmdab:labc:olor}({it:str}) {cmdab:lw:idth}({it:numlist})
{cmdab:labs:ize}({it:numlist}) {cmdab:labl:ayer}({it:numlist}) {cmd:labprop} {cmd:labscale}({it:num}) {cmd:points}({it:num})
{cmd:full} {cmd:cfill}({it:str}) {cmdab:clc:olor}({it:str}) {cmdab:clw:idth}({it:str}) {cmd:wrap}({it:num}) *
{cmd:]}
{cmdab:labs:ize}({it:numlist}) {cmdab:labl:ayer}({it:numlist}) {cmd:labprop} {cmd:labscale}({it:num}) {cmd:points}({it:num}) {cmd:rotate}({it:degrees})
{cmd:full} {cmd:cfill}({it:str}) {cmdab:clc:olor}({it:str}) {cmdab:clw:idth}({it:str}) {cmd:wrap}({it:num}) * {cmd:]}
{p 4 4 2}


@@ -61,7 +60,9 @@ there are a lot of very small barely-discernible slices. Default is {opt thresh(
{p2coldent : {opt labcond:ition(num)}}The condition for showing value labels. For example, if we only want to display categories with a greater than a value of 100, we can specify
{opt labcond(100)}. If the {opt share} is used, then please specify the share threshold (out of 100). Default is {opt labcond(0)}.{p_end}

{p2coldent : {opt wrap(num)}}Wrap the labels after a number of characters. A good starting point for very long labels is {opt wrap(50)}.{p_end}
{p2coldent : {opt wrap(num)}}Wrap the labels after a number of characters. Word boundaries are respected.{p_end}

{p2coldent : {opt rotate(degrees)}}If {opt full} is used, then rotate the figure counter-clockwise by {it:degrees}. Default is {opt rotate(0)}.{p_end}

{p2coldent : {opt labc:olor(str)}}The color of the labels. Default is {opt labc(white)}.{p_end}

@@ -97,13 +98,11 @@ the memory burden of drawing more points. This is an advanced option so use care

{title:Dependencies}

The {browse "http://repec.sowi.unibe.ch/stata/palettes/index.html":palette} package (Jann 2018, 2022) is required for {cmd:sunburst}:

{stata ssc install palettes, replace}
{stata ssc install colrspace, replace}
{stata ssc install graphfunctions, replace}

Even if you have these installed, it is highly recommended to update the dependencies:
{stata ado update, update}
Please make sure you have the latest versions installed.

{title:Examples}

@@ -114,8 +113,8 @@ See {browse "https://github.com/asjadnaqvi/stata-sunburst":GitHub} for examples.

{title:Package details}

Version : {bf:sunburst} v1.71
This release : 10 Jun 2024
Version : {bf:sunburst} v1.8
This release : 16 Oct 2024
First release: 24 Dec 2022
Repository : {browse "https://github.com/asjadnaqvi/stata-sunburst":GitHub}
Keywords : Stata, graph, sunburst
@@ -136,14 +135,14 @@ Please submit bugs, errors, feature requests on {browse "https://github.com/asja

Suggested citation guidlines for this package:

Naqvi, A. (2024). Stata package "sunburst" version 1.71. Release date 10 June 2024. https://github.com/asjadnaqvi/stata-sunburst.
Naqvi, A. (2024). Stata package "sunburst" version 1.8. Release date 16 October 2024. https://github.com/asjadnaqvi/stata-sunburst.

@software{streamplot,
author = {Naqvi, Asjad},
title = {Stata package ``sunburst''},
url = {https://github.com/asjadnaqvi/stata-sunburst},
version = {1.71},
date = {2024-06-10}
version = {1.8},
date = {2024-10-16}
}


@@ -157,7 +156,7 @@ Naqvi, A. (2024). Stata package "sunburst" version 1.71. Release date 10 June 20
{title:Other visualization packages}

{psee}
{helpb arcplot}, {helpb alluvial}, {helpb bimap}, {helpb bumparea}, {helpb bumpline}, {helpb circlebar}, {helpb circlepack}, {helpb clipgeo}, {helpb delaunay}, {helpb joyplot},
{helpb marimekko}, {helpb polarspike}, {helpb sankey}, {helpb schemepack}, {helpb spider}, {helpb streamplot}, {helpb sunburst}, {helpb treecluster}, {helpb treemap}, {helpb waffle}
{helpb arcplot}, {helpb alluvial}, {helpb bimap}, {helpb bumparea}, {helpb bumpline}, {helpb circlebar}, {helpb circlepack}, {helpb clipgeo}, {helpb delaunay}, {helpb graphfunctions}, {helpb joyplot},
{helpb marimekko}, {helpb polarspike}, {helpb sankey}, {helpb schemepack}, {helpb spider}, {helpb splinefit}, {helpb streamplot}, {helpb sunburst}, {helpb ternary}, {helpb treecluster}, {helpb treemap}, {helpb trimap}, {helpb waffle}

or visit {browse "https://github.com/asjadnaqvi":GitHub} for detailed documentation and examples.
or visit {browse "https://github.com/asjadnaqvi":GitHub}.

0 comments on commit f434930

Please sign in to comment.