There are plenty of themes and color schemes than can be uses with options['theme'] and options['color_scheme']. For example, the following plot uses the ''wallStreetJournal'' theme and the ''Economist'' color scheme:
${ plotter.barplot(id='barplot1.txt', header = True, theme = 'wallStreetJournal', color_scheme='Economist') }
The following table shows the available themes:
| economist | excel | tableau | stata | igray |
| solarized | paulTol | ggplot | wallStreetJournal | cx |
The following table shows the available color schemes:
| CanvasXpress | CanvasXpressT | BlackAndWhite | StataMono | Stata3 | Stata2 | Stata | WallStreetJournalDemRep |
| WallStreetJournalBlackGreen | WallStreetJournalRedGreen | WallStreetJournal3 | WallStreetJournal2 | WallStreetJournal | Tableau | GGPlot | Solarized |
| Excel3 | Excel2 | Excel | Bootstrap | Economist | EconomistBG | Pastel | Pastel2 |
| Balanced | YlGn | YlGnBu | GnBu | BuGn | PuBuGn | PuBu | BuPu |
| RdPu | PuRd | OrRd | YlOrRd | YlOrBr | Purples | Blues | Greens |
| Oranges | Reds | Greys | Solarized | Excel3 | Excel2 | Excel |
Theme: economist
Theme: excel
Theme: tableau
Theme: stata
Theme: igray
Theme: solarized
Theme: paulTol
Theme: ggplot
Theme: wallStreetJournal
Theme: cx
You can cite tables and figures using the following syntax:
We use ${plotter.add_figure('example')} to add a new reference to 'example' text, so it marks it as 1, and from now on we can use that refence by using ${ plotter.get_figure('example') }. continued calls to 'plotter.add_figure' with other ids will increase the value of the counter, so each text will have its own reference.
The same is also true for tables, for example for a table called table1, we use ${ plotter.add_table('tab:table1')} and ${ plotter.add_table('tab:table1')}
We will show some examples:
Fig $1 : This is an example
We cite $1 as an example
Fig $2 : This is a test
We cite $2 as a test
Table $1 : This is an example table
We cite table $2 as an example
Table $2 : This is a test table
We cite table $2 as a test table
| 1.0 | 2.0 | 3.0 |
| 11.0 | 22.0 | 33.0 |
| 111.0 | 222.0 | 333.0 |
You can embed images using the following syntax (for an image called example.png):
${ plotter.embed_img('file_data/example.png', height=300, width=300) }
We will show an example:
You can create tables using the following syntax (eg: for a table called table1.txt):
${ plotter.table(id='table1.txt', header=True, styled='dt', attrib = {'class' : 'table'}, func=mod_data, custom_buttons = ['copyHtml5', 'excelHtml5', 'csvHtml5', 'pdfHtml5']) }
In the above example we are creating a table with 'datatable' style, applying a custom function called 'mod_data' where we are modifying (applying logarithms) the values of the table before being shown:
def mod_data(data):
for i, row in enumerate(data):
for j, cell in enumerate(row):
if i > 0 and j > 0: data[i][j] = math.log(float(data[i][j]))Additionaly, we are also adding buttons to save the table in different formats (this option is only available with dt styled tables)
We will show some examples that can be check in the template.txt file:
Data table (Header true, text false, style DT):
| a | b | c |
|---|---|---|
| 1.0 | 0.6931471805599453 | 1.0986122886681098 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 11.0 | 3.091042453358316 | 3.4965075614664802 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
| 111.0 | 5.402677381872279 | 5.808142489980444 |
Data table (Header true, text false, style BS):
| 1 | 2 | 3 |
|---|---|---|
| 11.0 | 22.0 | 33.0 |
| 111.0 | 222.0 | 333.0 |
Data table (Header true, text true, style DT):
| Read_ID | Score | Organism |
|---|---|---|
| A01641:285:HKKKKDSX5:3:1571:5629:14340_1 | 99.237 | Mus musculus |
| A01642:285:HKKKKDSX5:3:1571:5629:14340_1 | 95.42 | Mus musculus |
| A01643:285:HKKKKDSX5:3:1571:5629:14340_1 | 93.13 | Mus musculus |
| A01644:285:HKKKKDSX5:3:1571:5629:14340_1 | 99.237 | Mus musculus |
| A01645:285:HKKKKDSX5:3:1571:5629:14340_1 | 99.237 | Mus musculus |
You can create mermaid charts using the mermaidJS syntax. Because it is not so straightforward to draw common patterns, we will leave mermaidJS documentation for further reference (MermaidJS documentation):
Here are some examples of mermaid charts:
Flowchart:
---
title: Hello Title
config:
theme: base
themeVariables:
primaryColor: "#00ff00"
---
graph LR;
A --- B ;
A --- E(5) ;
B-->C[fa:fa-ban forbidden];
B-->D(fa:fa-spinner);
click A callback "Texto para el tooltip"
click B href "#CanvasXpress-ParentNode-obj_3_"
Timeline:
---
title: Hello Title
config:
theme: base
themeVariables:
primaryColor: "#00ff00"
---
timeline
title Workflow
section Cluster Steps
get reliable pairs : Net Metrics
get clusters : Cluster Metrics
: CDLib Metrics
clean clusters : Cluster Metrics
: CDLib Metrics
prepare and randomize clusters : Nothing
cluster ranking : CRank Metrics
section Disease Steps
disease prediction : Disease Metrics
section Ranker Steps
gene ranking metrics : First Ranker Metrics
: First Ranker Metrics Best Genes
geometric mean integration : Geometric integration
gene disease ranking : Second Ranker Metrics
: Second Ranker Metrics Best Genes
get control prediction: Phen2Gene Metrics
plotter.barplot(id='barplot1.txt', header = True, config={'graphOrientation': 'vertical', "xAxisTitle": "Valores"})
plotter.barplot(id = 'barplot2.txt', header = True, height = 300)
plotter.barplot(id = 'barplot3.txt', header= True, smp_attr = [1,2], var_attr = [1,2], segregate = {'var': ['nerv'], 'smp' : ['type2']},
config = {'layoutCollapse' : 'false', 'layoutType' : 'rows', 'graphOrientation' : 'vertical'}, height = 300, width = 300)
plotter.stacked(id = 'barplot1.txt', header = True, config = {'graphOrientation' : 'vertical'}, theme="stata")
plotter.stackedline(id = 'barplot3.txt', header= True, smp_attr = [1,2], var_attr = [1,2], transpose = False, height = 500, width = 500,
xAxis = ["gen1", "gen2"], #These variable names are used for stacked barplots
xAxis2 = ["gen3", "gen4"], #These variable names are used for lineplots
config = {'graphOrientation' : 'vertical', "xAxis2Show": True,
"xAxis2TickFormat":"%.2f G3-4",
"xAxisTickFormat":"%.2f G1-2",
"xAxisTitle": "Expression of genes 1 and 2 (bars)",
"xAxis2Title": "Expression of genes 3 and 4 (lines)"})
plotter.line(id= 'barplot1.txt', header = True, func=mod_data )
plotter.barline(id = 'barplot3.txt', header= True, smp_attr = [1,2], var_attr = [1,2], transpose = False, height = 500, width = 500,
xAxis = ["gen1", "gen2"], #These variable names are used for barplots
xAxis2 = ["gen3", "gen4"], #These variable names are used for lineplots
config = {'graphOrientation' : 'vertical', "xAxis2Show": True,
"xAxis2TickFormat":"%.2f G3-4",
"xAxisTickFormat":"%.2f G1-2",
"xAxisTitle": "Expression of genes 1 and 2 (bars)",
"xAxis2Title": "Expression of genes 3 and 4 (lines)"})
plotter.dotplot(id = 'canvas_table', header = True, row_names = True, connect = True, height = 300)
plotter.pie(id= 'pie_uniq.txt')
plotter.pie(id= 'barplot1.txt', header = True, row_names = True)
plotter.pie(id= 'barplot1.txt', header = True, row_names = True, transpose = True)
plotter.corplot(id = 'correlation1.tsv', header = True, row_names = True, correlationAxis = 'variables')
plotter.scatter2D(id= 'x_y.txt', header= True, x_label = 'Num genes', y_label = 'FPKM', alpha = 0.3, theme="tableau" )
plotter.scatter2D(id= 'x_y.txt', header= True, x_label = 'Num genes', y_label = 'FPKM', add_densities=True)
plotter.scatter2D(id= 'x_y_crowded.txt', header= True, x_label = 'Num genes', y_label = 'FPKM', add_densities=True, alpha = 0.3 )
plotter.scatter2D(id= 'x_y_crowded.txt', header= True, x_label = 'Num genes', y_label = 'FPKM', static=True, theme="tableau" )
plotter.scatter3D(id= 'scatter3dsizeAndColor.txt', header= True, row_names = True, x_label = 'Num genes', y_label = 'FPKM', z_label= "3thMetric",
smp_attr=[6], xAxis = "liver", yAxis="brain", zAxis="lung", pointSize="spleen", colorScaleBy="kidney", shapeBy="pathway")
plotter.scatterbubble2D(id = 'haplotipe_array', header = True, row_names = False, upper_limit = 70, lower_limit = 4, ranges = 80,
xAxis = ['pos'], yAxis = ['haplotipe'], zAxis = ['freq'])
plotter.hexplot(id= 'x_y_crowded.txt', header= True, x_label = 'Num genes', y_label = 'FPKM', bins=30)
plotter.boxplot(id = 'boxplot.txt', header = True, row_names = True)
plotter.boxplot(id = 'boxplot_one_series.txt', header = True, row_names = True)
plotter.boxplot(id = 'boxplot_factor.txt', header = True, row_names = True, default= False, smp_attr = [4], group = 'pathway' )
plotter.boxplot(id = 'rank_distribution.txt', header = True, row_names = False, default = False, smp_attr = [0,1,2],
group = ["clust_method", "clust_status"], height = 500, width= 900)
plotter.boxplot(id = 'boxplot_grid.txt', header = True, row_names = False, default = False, smp_attr = [0,1],
group = ["genes", "samples"], height = 700, width= 800, config={"graphOrientation":"vertical"})
plotter.boxplot(id = 'boxplot_factor.txt', header = True, row_names = True, default= False,
smp_attr = [4], group = 'pathway', add_violin=True )
plotter.density(id="density_one_serie.txt", row_names = False, header = True, fields=[0])
plotter.density(id="density_one_serie.txt", row_names = False, header = True, smp_attr=[1], group="Group", config={"histogramStat":"density"})
plotter.density(id="ridgeline.txt", header = True, row_names = True, fillDensity = True, median = True)
plotter.ridgeline(id = 'ridgeline.txt', header = True, row_names = True)
plotter.radar(id='barplot4.txt', header = True, row_names = True, subtype=["stacked"] or ["bar", "area", "line", "dot"])
plotter.radar(id='barplot3.txt', header = True, row_names = True, smp_attr = [1,2], var_attr = [1,2], subtype=["area"], show_factors=["type", "-", "type2"])
plotter.circular(id = 'circular.txt', header = True, row_names = True, links = 'links', ringsType = ['heatmap', 'dot', 'bar'])
plotter.heatmap(id = 'hap_sample', header = True, row_names = True )
plotter.area(id = 'barplot3.txt', header= True, smp_attr = [1,2], var_attr = [1,2], transpose = False,
config = {'graphOrientation' : 'vertical', "xAxis2Show": True}, height = 500, width = 500)
plotter.arealine(id = 'barplot3.txt', header= True, smp_attr = [1,2], var_attr = [1,2], transpose = False, height = 500, width = 500,
xAxis = ["gen3", "gen4"], #These variable names are used for dotplots
xAxis2 = ["gen1", "gen2"], #These variable names are used for lineplots
config = {'graphOrientation' : 'vertical', "xAxis2Show": True})
plotter.dotline(id = 'barplot3.txt', header= True, smp_attr = [1,2], var_attr = [1,2], transpose = False, height = 500, width = 500,
xAxis = ["gen3", "gen4"], #These variable names are used for dotplots
xAxis2 = ["gen1", "gen2"], #These variable names are used for lineplots
config = {'graphOrientation' : 'vertical', "xAxis2Show": True})
You can create networks using different plotting libraries. The following examples show how to create networks using different libraries.
plotter.network(id = 'network.txt', method = 'cytoscape', reference_nodes = ["a", "e"], group_nodes= {"g1": ["i", "j"], "g2": ["b", "c"]})
plotter.network(id = 'network.txt', method = 'elgrapho', group = 'layer', layout = 'forcedir', reference_nodes = ["a", "e"])
plotter.network(id = 'network.txt', method = 'sigma', reference_nodes = ["a", "e"])
plotter.network(id = 'network.txt', method = 'pyvis', reference_nodes = ["a", "e"], group_nodes= {"g1": ["i", "j"], "g2": ["b", "c"]})