Bar
Turning quantitative values into geometric shapes.
Overview
Novem offers 16 types of barcharts but they can be categorized into three main archetypes:
bar
- reguar barchartsbar
- stacked barchartgbar
- grouped barchart
In addition to the above there is a special aggregate barchart, abar
, which will be explained
in detail below.
To accomodate horizontal as well as top/bottom anchoring novem further expands the barcharts with two subcategories, horizontal and inverted.
By prepending one of the above type with either h
, i
or both you can tell the bars to be anchored
to the left side h
, or right side ih
. In addition to anchor a bart to the top (making it “grow” down)
just appned i
to the regular type. e.g. ibar
Below is a comprehensive list of possible barchart types.
/vis/plots/<name>/type
Regular Horizontal Inverted Inverted Horizontal
------- ---------- -------- -------------------
bar hbar ibar ihbar
sbar hsbar isbar ihsbar
gbar hgbar igbar ihgbar
abar habar iabar ihabar
Structure
Barcharts follow a regular novem chart structure as outlined below. For a more detailed introdution to the chart structure please see the chart structure details page.
en_letter_frequency => Name
├── config => Configuration options
│ ├── caption => Caption below chart
│ ├── title => Title of chart
│ └── type => bar, sbar, gbar etc...
├── data => data to chart
├── description => Description (meta)
├── name => Name (meta)
└── shared => Sharing information
├── +org~group => Shared with an org group
├── @username~group => Shared with a user group
└── public => Shared with everyone
Data
curl -X POST https://api.novem.io/vis/plots/<name>/data \
-H "Authorization: Bearer <your_token>" \
--data "@data.csv"
Like most novem charts the primary way to update the barchart is by writing
the information you want visualised to the /data
endpoint.
Novem will assume that the first column is the data for the category axis and the second
column the data for the value axis. By default the category axis would be the x-axis,
but this will be flipped in the example of h*
and ih*
versions.
Config
Barchart Types
As mentioned in the introduction there are 3 main types of barcharts available on the novem platform.
Regular
Stacked
Grouped
Aggregate
Aggregate plots are identical to regular plots, excpet they represent the sum of the columns for each category label.
Outputs
The novem barchart offers six outputs, four for the final visaulisation and two
for the input data. They can all be found under the /files
endpoint or by
appending the extensions below. For details on the respective output formats
please see the api file documentation.
pdf
- a pdf representation/config/render/orientation
orientation of the plot.png
- a png representation/config/render/orientation
orientation of the plot.txt
- a utf-8 textual representation of the plotansi
- a ansi escape sequency colored utf-8 textual representation of the plotcsv
- a csv file containing the input dataxlsx
- an xlsx file containing the input data
Examples
This section contains a few practical examples on how to use the api and common use cases. For more comprehensive examples we suggest visting some of our example charts or reading a couple of our getting started with novem blog posts.
Create your first barchart
Welcome to your first barchart, we’ll assume that you have a csv file calleden_letter_freq.csv
file two columns:- Charracter
- Frequency
If you want to cheat you can find an example file here : url to en_letter_freq.csv
.
# this assumes that the novem client is installed in $PATH
cat en_letter_freq.csv | novem \
-p <name> # -p for plot name will be created or updated
-w config/type "bar" \ # -w for write followed by relative plot path and value
-w config/title "Frequency of letters in the English language" \
-w config/caption "Analysis of entries in the Concise Oxford dictionary "\
"as published by the compilers. The chart above represents "\
"data taken from Pavel Micka's website, which cites "\
"Robert Lewand's Cryptological Mathematics" \
-g url # returns the url
# Assume the novem fuse api is mounted on ~/novem
# create a new plot
mkdir ~/novem/vis/plots/<name>
# change the type to be bar
echo "bar" > ~/novem/vis/plots/<name>/config/type
# upload the data
cp en_letter_freq.csv ~/novem/vis/plots/<name>/data
# add title and caption
echo "Frequency of letters in the English language" >\
~/novem/vis/plots/<name>/config/title
echo "Analysis of entries in the Concise Oxford dictionary "\
"as published by the compilers. The chart above represents "\
"data taken from Pavel Micka's website, which cites "\
"Robert Lewand's Cryptological Mathematics" >\
~/novem/vis/plots/<name>/config/caption
cat ~/novem/vis/plots/<name>/url
import pandas as pd # everything is easier with pandas
from novem import Plot # get the novem plot object
# construct novem chart obejct
# if the name already exists it will be updated
barchart = Plot(<name>, \
type='bar', \
title='Frequency of letters in the English language', \
caption = """Analysis of entries in the Concise Oxford dictionary
as published by the compilers. The chart above represents
data taken from Pavel Micka's website, which cites
Robert Lewand's Cryptological Mathematics"""
)
df = pd.read_csv('en_letter_freq.csv') # read csv
df.pipe(barchart) # create the barchart
# with our python api it's easy to update the chart using
# simple pandas idioms
# df.sort_values(by='frequency').pipe(barchart)
print(barchart.url) # get the url
# The http PUT verb will create a new chart entity
# POST is used to write to files that "already" exists.
# Create our chart by PUTing a new name
curl -X PUT https://api.novem.io/vis/plots/<name> \
-H "Authorization: Bearer <your_token>"
# Change our type to be a bar chart
curl -X PUT https://api.novem.io/vis/plots/<name>/config/type \
-H "Authorization: Bearer <your_token>" \
-d "bar" # feel free to experiemnt with different types
# Write the data we want to visualize
curl -X POST https://api.novem.io/vis/plots/<name>/data \
-H "Authorization: Bearer <your_token>" \
--data "@en_letter_freq.csv"
# Add a title to our chart
curl -X PUT https://api.novem.io/vis/plots/<name>/config/title \
-H "Authorization: Bearer <your_token>" \
-d "Frequency of letters in the English language"
# And a nice caption
curl -X PUT https://api.novem.io/vis/plots/<name>/config/caption \
-H "Authorization: Bearer <your_token>" \
-d "Analysis of entries in the Concise Oxford dictionary "\
"as published by the compilers. The chart above represents "\
"data taken from Pavel Micka's website, which cites "\
"Robert Lewand's Cryptological Mathematics"
# Finally GET our url so we can view the finished product
curl -X GET https://api.novem.io/vis/plots/<name>/url \
-H "Authorization: Bearer <your_token>"