All Projects → red-data-tools → YouPlot

red-data-tools / YouPlot

Licence: MIT License
A command line tool that draw plots on the terminal.

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to YouPlot

Visidata
A terminal spreadsheet multitool for discovering and arranging data
Stars: ✭ 4,606 (+1017.96%)
Mutual labels:  tsv, csv, tui
Faster Than Csv
Faster CSV on Python 3
Stars: ✭ 52 (-87.38%)
Mutual labels:  tsv, csv
Pyexcel Io
One interface to read and write the data in various excel formats, import the data into and export the data from databases
Stars: ✭ 40 (-90.29%)
Mutual labels:  tsv, csv
Rbql
🦜RBQL - Rainbow Query Language: SQL-like language for (not only) CSV file processing. Supports SQL queries with Python and JavaScript expressions
Stars: ✭ 118 (-71.36%)
Mutual labels:  tsv, csv
Csvtk
A cross-platform, efficient and practical CSV/TSV toolkit in Golang
Stars: ✭ 566 (+37.38%)
Mutual labels:  tsv, csv
Sqlitebiter
A CLI tool to convert CSV / Excel / HTML / JSON / Jupyter Notebook / LDJSON / LTSV / Markdown / SQLite / SSV / TSV / Google-Sheets to a SQLite database file.
Stars: ✭ 601 (+45.87%)
Mutual labels:  tsv, csv
Tsv Utils
eBay's TSV Utilities: Command line tools for large, tabular data files. Filtering, statistics, sampling, joins and more.
Stars: ✭ 1,215 (+194.9%)
Mutual labels:  tsv, csv
Pxi
🧚 pxi (pixie) is a small, fast, and magical command-line data processor similar to jq, mlr, and awk.
Stars: ✭ 248 (-39.81%)
Mutual labels:  tsv, csv
Data Curator
Data Curator - share usable open data
Stars: ✭ 199 (-51.7%)
Mutual labels:  tsv, csv
Intellij Csv Validator
CSV validator, highlighter and formatter plugin for JetBrains Intellij IDEA, PyCharm, WebStorm, ...
Stars: ✭ 198 (-51.94%)
Mutual labels:  tsv, csv
Swiftcsv
CSV parser for Swift
Stars: ✭ 511 (+24.03%)
Mutual labels:  tsv, csv
tabular-stream
Detects tabular data (spreadsheets, dsv or json, 20+ different formats) and emits normalized objects.
Stars: ✭ 34 (-91.75%)
Mutual labels:  tsv, csv
Vroom
Fast reading of delimited files
Stars: ✭ 462 (+12.14%)
Mutual labels:  tsv, csv
Structured Text Tools
A list of command line tools for manipulating structured text data
Stars: ✭ 6,180 (+1400%)
Mutual labels:  tsv, csv
Pytablewriter
pytablewriter is a Python library to write a table in various formats: CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV.
Stars: ✭ 422 (+2.43%)
Mutual labels:  tsv, csv
Q
q - Run SQL directly on CSV or TSV files
Stars: ✭ 8,809 (+2038.11%)
Mutual labels:  tsv, csv
Sq
swiss-army knife for data
Stars: ✭ 275 (-33.25%)
Mutual labels:  tsv, csv
Rainbow csv
🌈Rainbow CSV - Vim plugin: Highlight columns in CSV and TSV files and run queries in SQL-like language
Stars: ✭ 337 (-18.2%)
Mutual labels:  tsv, csv
Winmerge
WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.
Stars: ✭ 2,358 (+472.33%)
Mutual labels:  tsv, csv
Miller
Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON
Stars: ✭ 4,633 (+1024.51%)
Mutual labels:  tsv, csv

Build Status Gem Version DOI Docs Stable The MIT License

YouPlot is a command line tool that draws plots on the terminal.

📊 Powered by UnicodePlot

Installation

gem install youplot

Quick Start

barplot histogram scatter density boxplot

uplot <command> [options] <data.tsv>

barplot

curl -sL https://git.io/ISLANDScsv \
| sort -nk2 -t, \
| tail -n15 \
| uplot bar -d, -t "Areas of the World's Major Landmasses"

barplot

histogram

echo -e "from numpy import random;" \
        "n = random.randn(10000);"  \
        "print('\\\n'.join(str(i) for i in n))" \
| python \
| uplot hist --nbins 20

histogram

lineplot

curl -sL https://git.io/AirPassengers \
| cut -f2,3 -d, \
| uplot line -d, -w 50 -h 15 -t AirPassengers --xlim 1950,1960 --ylim 0,600

lineplot

scatter

curl -sL https://git.io/IRIStsv \
| cut -f1-4 \
| uplot scatter -H -t IRIS

scatter

density

curl -sL https://git.io/IRIStsv \
| cut -f1-4 \
| uplot density -H -t IRIS

density

boxplot

curl -sL https://git.io/IRIStsv \
| cut -f1-4 \
| uplot boxplot -H -t IRIS

boxplot

count

cat gencode.v35.annotation.gff3 \
| grep -v '#' | grep 'gene' | cut -f1 \
| uplot count -t "The number of human gene annotations per chromosome"  -c blue

count

In this example, YouPlot counts the number of chromosomes where genes are located.

Note: count is not very fast because it runs in a Ruby script. This is fine in most cases, as long as the data size is small. If you want to visualize huge data, it is faster to use a combination of common Unix commands as shown below.

cat gencode.v35.annotation.gff3 | grep -v '#' | grep 'gene' | cut -f1 \
| sort | uniq -c | sort -nrk1 \
| uplot bar --fmt yx -d ' ' -t "The number of human gene annotations per chromosome"  -c blue

Usage

Commands

uplot is the shortened form of youplot. You can use either.

Command Description
cat data.tsv | uplot <command> [options] Take input from stdin
uplot <command> [options] data.tsv ... Take input from files
pipeline1 | uplot <command> -O | pipeline2 Outputs data from stdin to stdout

Subcommands

The following sub-commands are available.

command short how it works
barplot bar draw a horizontal barplot
histogram hist draw a horizontal histogram
lineplot line draw a line chart
lineplots lines draw a line chart with multiple series
scatter s draw a scatter plot
density d draw a density plot
boxplot box draw a horizontal boxplot
count c draw a barplot based on the number of occurrences (slow)
colors color show the list of available colors

Output the plot

  • -o
    • By default, the plot is output to standard error output.
    • If you want to output to standard input, Use hyphen -o - or no argument uplot s -o | .

Output the input data

  • -O
    • By default, the input data is not shown anywhere.
    • If you want to pass the input data directly to the standard output, Use hyphen -O - or no argument uplot s -O |.
    • This is useful when passing data to a subsequent pipeline.

Header

  • -H
    • If input data contains a header line, you need to specify the -H option.

Delimiter

  • -d
    • You do not need to use -d option for tab-delimited text since the default value is tab.
    • To specify a blank space, you can use uplot bar -d ' ' data.txt.

Real-time data

  • -p --progress
    • Experimental progressive mode is currently under development.
    • ruby -e 'loop{puts rand(100)}' | uplot line --progress

Show detailed options for subcommands

  • --help
    • The --help option will show more detailed options for each subcommand.
    • uplot hist --help

Set columns as x-axis or y-axis

  • YouPlot treats the first column as the X axis and the second column as the Y axis. When working with multiple series, the first column is the X axis, the second column is series Y1, the third column is series Y2, and so on.

  • If you pass only one column of data for line and bar, YouPlot will automatically use a sequential number starting from 1 as the X-axis.

  • --fmt

    • --fmt xyy --fmt xyxy --fmt yx options give you a few more choices. See youplot <command> --help for more details.
    • The fmt option may be renamed in the future.
    • The -x and -y options might be used to specify columns in the future.
  • Use awk '{print $2, $1}' to swap columns. Use paste to concatenate series.

Categorical data

  • With GNU datamash, you can manage to handle categorized data.
    • cat test/fixtures/iris.csv | sed '/^$/d' | datamash --header-in --output-delimiter=: -t, -g5 collapse 3,4 | cut -f2-3 -d: | sed 's/:/\n/g' | uplot s -d, -T --fmt xyxy
    • This is not so easy...

Time series

  • Not yet supported.

Tools that are useful to use with YouPlot

Contributing

YouPlot is a library under development, so even small improvements like typofix are welcome! Please feel free to send us your pull requests.

  • Report bugs
  • Fix bugs and submit pull requests
  • Write, clarify, or fix documentation
    • English corrections by native speakers are welcome.
  • Suggest or add new features
  • Make a donation

Development

# fork the main repository by clicking the Fork button. 
git clone https://github.com/your_name/YouPlot
bundle install             # Install the gem dependencies
bundle exec rake test      # Run the test
bundle exec rake install   # Installation from source code
bundle exec exe/uplot      # Run youplot (Try out the edited code)
Do you need commit rights to my repository?
Do you want to get admin rights and take over the project?
If so, please feel free to contact us.

Acknowledgements

License

MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].