youplot-0.4.6/0000775000175000017500000000000014762626417013467 5ustar terceiroterceiroyouplot-0.4.6/youplot.gemspec0000664000175000017500000000142714762626417016553 0ustar terceiroterceiro# frozen_string_literal: true require_relative 'lib/youplot/version' Gem::Specification.new do |spec| spec.name = 'youplot' spec.version = YouPlot::VERSION spec.authors = ['kojix2'] spec.email = ['2xijok@gmail.com'] spec.summary = 'A command line tool for Unicode Plotting' spec.description = 'A command line tool for Unicode Plotting' spec.homepage = 'https://github.com/red-data-tools/YouPlot' spec.license = 'MIT' spec.required_ruby_version = Gem::Requirement.new('>= 2.5.0') spec.files = Dir['*.{md,txt}', '{lib,exe}/**/*'] spec.bindir = 'exe' spec.executables = %w[uplot youplot] spec.require_paths = ['lib'] spec.add_dependency 'csv' spec.add_dependency 'unicode_plot', '>= 0.0.5' end youplot-0.4.6/test/0000775000175000017500000000000014762626417014446 5ustar terceiroterceiroyouplot-0.4.6/test/youplot_test.rb0000664000175000017500000000102014762626417017536 0ustar terceiroterceiro# frozen_string_literal: true require_relative 'test_helper' class YouPlotTest < Test::Unit::TestCase def teardown YouPlot.run_as_executable = false end test :it_has_a_version_number do assert_kind_of String, ::YouPlot::VERSION end test :run_as_executable do assert_equal false, YouPlot.run_as_executable assert_equal false, YouPlot.run_as_executable? YouPlot.run_as_executable = true assert_equal true, YouPlot.run_as_executable assert_equal true, YouPlot.run_as_executable? end end youplot-0.4.6/test/youplot/0000775000175000017500000000000014762626417016161 5ustar terceiroterceiroyouplot-0.4.6/test/youplot/simple_test.rb0000664000175000017500000001713314762626417021043 0ustar terceiroterceiro# frozen_string_literal: true require 'tempfile' require_relative '../test_helper' class YouPlotSimpleTest < Test::Unit::TestCase class << self def startup @stdin = $stdin.dup @stdout = $stdout.dup @stderr = $stderr.dup end def shutdown $stdin = @stdin $stdout = @stdout $stderr = @stderr end end def setup $stdin = File.open(File.expand_path('../fixtures/simple.tsv', __dir__), 'r') @stderr_file = Tempfile.new @stdout_file = Tempfile.new $stderr = @stderr_file $stdout = @stdout_file end def teardown @stderr_file.close @stdout_file.close end def fixture(fname) File.read(File.expand_path("../fixtures/#{fname}", __dir__)) end # Single command # The goal is to verify that the command works without any options. test :barplot do assert_raise(ArgumentError) do YouPlot::Command.new(['barplot']).run end end test :bar do assert_raise(ArgumentError) do YouPlot::Command.new(['bar']).run end end test :histogram do YouPlot::Command.new(['histogram']).run assert_equal fixture('simple-histogram.txt'), @stderr_file.read end test :hist do YouPlot::Command.new(['hist']).run assert_equal fixture('simple-histogram.txt'), @stderr_file.read end test :lineplot do YouPlot::Command.new(['lineplot']).run assert_equal fixture('simple-lineplot.txt'), @stderr_file.read end test :line do YouPlot::Command.new(['line']).run assert_equal fixture('simple-lineplot.txt'), @stderr_file.read end test :lineplots do assert_raise(YouPlot::Backends::UnicodePlot::Error) do YouPlot::Command.new(['lineplots']).run end end test :lines do assert_raise(YouPlot::Backends::UnicodePlot::Error) do YouPlot::Command.new(['lines']).run end end test :scatter do assert_raise(YouPlot::Backends::UnicodePlot::Error) do YouPlot::Command.new(['scatter']).run end end test :s do assert_raise(YouPlot::Backends::UnicodePlot::Error) do YouPlot::Command.new(['s']).run end end test :density do assert_raise(YouPlot::Backends::UnicodePlot::Error) do YouPlot::Command.new(['density']).run end end test :d do assert_raise(YouPlot::Backends::UnicodePlot::Error) do YouPlot::Command.new(['d']).run end end test :boxplot do YouPlot::Command.new(['boxplot']).run assert_equal fixture('simple-boxplot.txt'), @stderr_file.read end test :box do YouPlot::Command.new(['box']).run assert_equal fixture('simple-boxplot.txt'), @stderr_file.read end test :count do YouPlot::Command.new(['c']).run assert_equal fixture('simple-count.txt'), @stderr_file.read end test :c do YouPlot::Command.new(['count']).run assert_equal fixture('simple-count.txt'), @stderr_file.read end test :plot_output_stdout do YouPlot::Command.new(['line', '-o']).run assert_equal '', @stderr_file.read assert_equal fixture('simple-lineplot.txt'), @stdout_file.read end test :data_output_stdout do YouPlot::Command.new(['box', '-O']).run assert_equal fixture('simple-boxplot.txt'), @stderr_file.read assert_equal fixture('simple.tsv'), @stdout_file.read end test :line_transpose do $stdin = File.open(File.expand_path('../fixtures/simpleT.tsv', __dir__), 'r') YouPlot::Command.new(['line', '--transpose']).run assert_equal fixture('simple-lineplot.txt'), @stderr_file.read end test :line_T do $stdin = File.open(File.expand_path('../fixtures/simpleT.tsv', __dir__), 'r') YouPlot::Command.new(['line', '-T']).run assert_equal fixture('simple-lineplot.txt'), @stderr_file.read end test :line_xlabel do YouPlot::Command.new(['line', '--xlabel', 'X-LABEL']).run assert_equal fixture('simple-lineplot-xlabel.txt'), @stderr_file.read end test :line_ylabel do YouPlot::Command.new(['line', '--ylabel', 'Y-LABEL']).run assert_equal fixture('simple-lineplot-ylabel.txt'), @stderr_file.read end test :line_width do YouPlot::Command.new(['line', '--width', '17']).run assert_equal fixture('simple-lineplot-width-17.txt'), @stderr_file.read end test :line_w do YouPlot::Command.new(['line', '-w', '17']).run assert_equal fixture('simple-lineplot-width-17.txt'), @stderr_file.read end test :line_height do YouPlot::Command.new(['line', '--height', '17']).run assert_equal fixture('simple-lineplot-height-17.txt'), @stderr_file.read end test :line_h do YouPlot::Command.new(['line', '-h', '17']).run assert_equal fixture('simple-lineplot-height-17.txt'), @stderr_file.read end test :line_margin do YouPlot::Command.new(['line', '--margin', '17']).run assert_equal fixture('simple-lineplot-margin-17.txt'), @stderr_file.read end test :line_m do YouPlot::Command.new(['line', '-m', '17']).run assert_equal fixture('simple-lineplot-margin-17.txt'), @stderr_file.read end test :line_padding do YouPlot::Command.new(['line', '--padding', '17']).run assert_equal fixture('simple-lineplot-padding-17.txt'), @stderr_file.read end test :line_border_corners do YouPlot::Command.new(['line', '--border', 'corners']).run assert_equal fixture('simple-lineplot-border-corners.txt'), @stderr_file.read end test :line_b_corners do YouPlot::Command.new(['line', '-b', 'corners']).run assert_equal fixture('simple-lineplot-border-corners.txt'), @stderr_file.read end test :line_border_barplot do YouPlot::Command.new(['line', '--border', 'barplot']).run assert_equal fixture('simple-lineplot-border-barplot.txt'), @stderr_file.read end test :line_b_barplot do YouPlot::Command.new(['line', '-b', 'barplot']).run assert_equal fixture('simple-lineplot-border-barplot.txt'), @stderr_file.read end test :line_canvas_ascii do YouPlot::Command.new(['line', '--canvas', 'ascii']).run assert_equal fixture('simple-lineplot-canvas-ascii.txt'), @stderr_file.read end test :line_canvas_braille do YouPlot::Command.new(['line', '--canvas', 'braille']).run assert_equal fixture('simple-lineplot.txt'), @stderr_file.read end test :line_canvas_density do YouPlot::Command.new(['line', '--canvas', 'density']).run assert_equal fixture('simple-lineplot-canvas-density.txt'), @stderr_file.read end test :line_canvas_dot do YouPlot::Command.new(['line', '--canvas', 'dot']).run assert_equal fixture('simple-lineplot-canvas-dot.txt'), @stderr_file.read end # test :line_canvas_block do # YouPlot::Command.new(['line', '--canvas', 'block']).run # assert_equal fixture('simple-lineplot-canvas-dot.txt'), @stderr_file.read # end test :hist_symbol_atmark do YouPlot::Command.new(['hist', '--symbol', '@']).run assert_equal fixture('simple-histogram-symbol-@.txt'), @stderr_file.read end test :line_xlim do YouPlot::Command.new(['line', '--xlim', '-1,5']).run assert_equal fixture('simple-lineplot-xlim--1-5.txt'), @stderr_file.read end test :line_ylim do YouPlot::Command.new(['line', '--ylim', '-25,50']).run assert_equal fixture('simple-lineplot-ylim--25-50.txt'), @stderr_file.read end test :line_xlim_and_ylim do YouPlot::Command.new(['line', '--xlim', '-1,5', '--ylim', '-25,50']).run assert_equal fixture('simple-lineplot-xlim--1-5-ylim--25-50.txt'), @stderr_file.read end test :line_grid do YouPlot::Command.new(['line', '--grid']).run assert_equal fixture('simple-lineplot.txt'), @stderr_file.read end test :line_no_grid do YouPlot::Command.new(['line', '--no-grid']).run assert_equal fixture('simple-lineplot-no-grid.txt'), @stderr_file.read end end youplot-0.4.6/test/youplot/iris_test.rb0000664000175000017500000001233514762626417020517 0ustar terceiroterceiro# frozen_string_literal: true require 'tempfile' require_relative '../test_helper' class YouPlotIRISTest < Test::Unit::TestCase class << self def startup @stdin = $stdin.dup @stdout = $stdout.dup @stderr = $stderr.dup end def shutdown $stdin = @stdin $stdout = @stdout $stderr = @stderr end end def setup $stdin = File.open(File.expand_path('../fixtures/iris.csv', __dir__), 'r') @stderr_file = Tempfile.new @stdout_file = Tempfile.new $stderr = @stderr_file $stdout = @stdout_file end def teardown @stderr_file.close @stdout_file.close end def fixture(fname) File.read(File.expand_path("../fixtures/#{fname}", __dir__)) end test :barplot do YouPlot::Command.new(['barplot', '-H', '-d,', '-t', 'IRIS-BARPLOT']).run assert_equal fixture('iris-barplot.txt'), @stderr_file.read end # barplot doesn't make sense, but just to make sure it works. test :bar do YouPlot::Command.new(['bar', '-H', '-d,', '-t', 'IRIS-BARPLOT']).run assert_equal fixture('iris-barplot.txt'), @stderr_file.read end test :histogram do YouPlot::Command.new(['histogram', '-H', '-d,', '-t', 'IRIS-HISTOGRAM']).run assert_equal fixture('iris-histogram.txt'), @stderr_file.read end test :hist do YouPlot::Command.new(['hist', '-H', '-d,', '-t', 'IRIS-HISTOGRAM']).run assert_equal fixture('iris-histogram.txt'), @stderr_file.read end # Yeah, lineplot/lineplots don't make sense too. test :lineplot do YouPlot::Command.new(['lineplot', '-H', '-d,', '-t', 'IRIS-LINEPLOT']).run assert_equal fixture('iris-lineplot.txt'), @stderr_file.read end test :line do YouPlot::Command.new(['line', '-H', '-d,', '-t', 'IRIS-LINEPLOT']).run assert_equal fixture('iris-lineplot.txt'), @stderr_file.read end # l is an undocumented alias of lineplot. test :l do YouPlot::Command.new(['l', '-H', '-d,', '-t', 'IRIS-LINEPLOT']).run assert_equal fixture('iris-lineplot.txt'), @stderr_file.read end test :lineplots do YouPlot::Command.new(['lineplots', '-H', '-d,', '-t', 'IRIS-LINEPLOTS']).run assert_equal fixture('iris-lineplots.txt'), @stderr_file.read end test :lines do YouPlot::Command.new(['lines', '-H', '-d,', '-t', 'IRIS-LINEPLOTS']).run assert_equal fixture('iris-lineplots.txt'), @stderr_file.read end # ls is an undocumented alias of lineplots. test :ls do YouPlot::Command.new(['lines', '-H', '-d,', '-t', 'IRIS-LINEPLOTS']).run assert_equal fixture('iris-lineplots.txt'), @stderr_file.read end test :scatter do YouPlot::Command.new(['scatter', '-H', '-d,', '-t', 'IRIS-SCATTER']).run assert_equal fixture('iris-scatter.txt'), @stderr_file.read end test :s do YouPlot::Command.new(['s', '-H', '-d,', '-t', 'IRIS-SCATTER']).run assert_equal fixture('iris-scatter.txt'), @stderr_file.read end test :density do YouPlot::Command.new(['density', '-H', '-d,', '-t', 'IRIS-DENSITY']).run assert_equal fixture('iris-density.txt'), @stderr_file.read end test :d do YouPlot::Command.new(['d', '-H', '-d,', '-t', 'IRIS-DENSITY']).run assert_equal fixture('iris-density.txt'), @stderr_file.read end test :boxplot do YouPlot::Command.new(['boxplot', '-H', '-d,', '-t', 'IRIS-BOXPLOT']).run assert_equal fixture('iris-boxplot.txt'), @stderr_file.read end test :box do YouPlot::Command.new(['box', '-H', '-d,', '-t', 'IRIS-BOXPLOT']).run assert_equal fixture('iris-boxplot.txt'), @stderr_file.read end # Yeah, lineplot/lineplots don't make sense too. # Just checking the behavior. test :c do YouPlot::Command.new(['count', '-H', '-d,']).run assert_equal fixture('iris-count.txt'), @stderr_file.read end test :count do YouPlot::Command.new(['c', '-H', '-d,']).run assert_equal fixture('iris-count.txt'), @stderr_file.read end # Output options. test :plot_output_stdout do YouPlot::Command.new(['bar', '-o', '-H', '-d,', '-t', 'IRIS-BARPLOT']).run assert_equal '', @stderr_file.read assert_equal fixture('iris-barplot.txt'), @stdout_file.read end test :data_output_stdout do YouPlot::Command.new(['bar', '-O', '-H', '-d,', '-t', 'IRIS-BARPLOT']).run assert_equal fixture('iris-barplot.txt'), @stderr_file.read assert_equal fixture('iris.csv'), @stdout_file.read end %i[colors color colours colour].each do |cmd_name| test cmd_name do YouPlot::Command.new([cmd_name.to_s]).run assert_equal fixture('colors.txt'), @stderr_file.read assert_equal '', @stdout_file.read end end test :colors_output_stdout do YouPlot::Command.new(['colors', '-o']).run assert_equal '', @stderr_file.read assert_equal fixture('colors.txt'), @stdout_file.read end test :unrecognized_command do assert_raise(YouPlot::Parser::Error) do YouPlot::Command.new(['abracadabra', '--hadley', '--wickham']).run end assert_equal '', @stderr_file.read assert_equal '', @stdout_file.read end test :encoding do $stdin = File.open(File.expand_path('../fixtures/iris_utf16.csv', __dir__), 'r') YouPlot::Command.new(['s', '--encoding', 'UTF-16', '-H', '-d,', '-t', 'IRIS-SCATTER']).run assert_equal fixture('iris-scatter.txt'), @stderr_file.read end end youplot-0.4.6/test/youplot/dsv_test.rb0000664000175000017500000001171214762626417020343 0ustar terceiroterceiro# frozen_string_literal: true require_relative '../test_helper' class YouPlotDSVTest < Test::Unit::TestCase def setup @m = YouPlot::DSV end test :transpose2 do n = nil assert_equal([[1, 2, 3], [4, 5, 6], [7, 8, 9]], @m.transpose2([[1, 4, 7], [2, 5, 8], [3, 6, 9]])) assert_equal([[1, 2, 3], [4, 5, n], [6, n, n]], @m.transpose2([[1, 4, 6], [2, 5], [3]])) assert_equal([[1, 2, 3], [n, 4, 5], [n, n, 6]], @m.transpose2([[1], [2, 4], [3, 5, 6]])) end test :get_headers do assert_equal([1, 4, 7], @m.get_headers([[1, 2, 3], [4, 5, 6], [7, 8, 9]], true, true)) assert_equal([1, 2, 3], @m.get_headers([[1, 4, 6], [2, 5], [3]], true, true)) assert_equal([1, 2, 3], @m.get_headers([[1], [2, 4], [3, 5, 6]], true, true)) assert_equal([1, 2, 3], @m.get_headers([[1, 2, 3], [4, 5, 6], [7, 8, 9]], true, false)) assert_equal([1, 4, 6], @m.get_headers([[1, 4, 6], [2, 5], [3]], true, false)) assert_equal([1], @m.get_headers([[1], [2, 4], [3, 5, 6]], true, false)) assert_equal(nil, @m.get_headers([[1, 2, 3], [4, 5, 6], [7, 8, 9]], false, true)) assert_equal(nil, @m.get_headers([[1, 2, 3], [4, 5, 6], [7, 8, 9]], false, false)) assert_equal([1, 2, 3], @m.get_headers([[1, 2, 3]], true, false)) end test :get_series do n = nil assert_equal([[2, 3], [5, 6], [8, 9]], @m.get_series([[1, 2, 3], [4, 5, 6], [7, 8, 9]], true, true)) assert_equal([[4, 6], [5], []], @m.get_series([[1, 4, 6], [2, 5], [3]], true, true)) assert_equal([[], [4], [5, 6]], @m.get_series([[1], [2, 4], [3, 5, 6]], true, true)) assert_equal([[4, 7], [5, 8], [6, 9]], @m.get_series([[1, 2, 3], [4, 5, 6], [7, 8, 9]], true, false)) assert_equal([[2, 3], [5, nil]], @m.get_series([[1, 4, 6], [2, 5], [3]], true, false)) assert_equal([[2, 3], [4, 5], [nil, 6]], @m.get_series([[1], [2, 4], [3, 5, 6]], true, false)) assert_equal([[1, 2, 3], [4, 5, 6], [7, 8, 9]], @m.get_series([[1, 2, 3], [4, 5, 6], [7, 8, 9]], false, true)) assert_equal([[1, 4, 6], [2, 5], [3]], @m.get_series([[1, 4, 6], [2, 5], [3]], false, true)) assert_equal([[1], [2, 4], [3, 5, 6]], @m.get_series([[1], [2, 4], [3, 5, 6]], false, true)) assert_equal([[1, 4, 7], [2, 5, 8], [3, 6, 9]], @m.get_series([[1, 2, 3], [4, 5, 6], [7, 8, 9]], false, false)) assert_equal([[1, 2, 3], [4, 5, n], [6, n, n]], @m.get_series([[1, 4, 6], [2, 5], [3]], false, false)) assert_equal([[1, 2, 3], [n, 4, 5], [n, n, 6]], @m.get_series([[1], [2, 4], [3, 5, 6]], false, false)) assert_equal([[], [], []], @m.get_series([[1, 2, 3]], true, false)) end end youplot-0.4.6/test/youplot/backends/0000775000175000017500000000000014762626417017733 5ustar terceiroterceiroyouplot-0.4.6/test/youplot/backends/processing_test.rb0000664000175000017500000000112214762626417023467 0ustar terceiroterceiro# frozen_string_literal: true require_relative '../../test_helper' class ProcessingTest < Test::Unit::TestCase test :count_values do @m = YouPlot::Backends::Processing assert_equal([%i[a b c], [3, 2, 1]], @m.count_values(%i[a a a b b c])) assert_equal([%i[c b a], [3, 2, 1]], @m.count_values(%i[a b b c c c])) end test :count_values_non_tally do @m = YouPlot::Backends::Processing assert_equal([%i[a b c], [3, 2, 1]], @m.count_values(%i[a a a b b c], tally: false)) assert_equal([%i[c b a], [3, 2, 1]], @m.count_values(%i[a b b c c c], tally: false)) end end youplot-0.4.6/test/unicode_plot_test.rb0000664000175000017500000000101014762626417020506 0ustar terceiroterceiro# frozen_string_literal: true require_relative 'test_helper' require 'unicode_plot' # Check the UnicodePlot constants that YouPlot depends on. # Prepare for UnicodePlot version upgrades. class UnicodePlotTest < Test::Unit::TestCase test 'VERSION' do assert UnicodePlot::VERSION end test 'BORDER_MAP' do assert_instance_of Hash, UnicodePlot::BORDER_MAP end test 'PREDEFINED_TRANSFORM_FUNCTIONS' do assert_instance_of Hash, UnicodePlot::ValueTransformer::PREDEFINED_TRANSFORM_FUNCTIONS end end youplot-0.4.6/test/test_helper.rb0000664000175000017500000000015314762626417017310 0ustar terceiroterceiro# frozen_string_literal: true require 'simplecov' SimpleCov.start require 'youplot' require 'test/unit' youplot-0.4.6/test/fixtures/0000775000175000017500000000000014762626417016317 5ustar terceiroterceiroyouplot-0.4.6/test/fixtures/simpleT.tsv0000664000175000017500000000004314762626417020467 0ustar terceiroterceiro-10 10 -20 20 -30 30 -40 40 -50 50 youplot-0.4.6/test/fixtures/simple.tsv0000664000175000017500000000004314762626417020343 0ustar terceiroterceiro-10 10 -20 20 -30 30 -40 40 -50 50 youplot-0.4.6/test/fixtures/simple-lineplot.txt0000664000175000017500000000445114762626417022201 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀│ │⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ │⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤│ │⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-ylim--25-50.txt0000664000175000017500000000445114762626417023674 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡇⠀⠀⠀⠀⠀⠀⠀⡜│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢀⠇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⠀⠀⠀⠀⠀⠀⠀⡇⠸⡀⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢧⠀⠀⠀⠀⠀⠀⠀⡇⠘⡄⠀⠀⠀⠀⠀⢸⠀⠀⡇⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡇⠀│ │⠀⠀⠀⢠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢇⠀⠀⠀⠀⠀⡸⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ │⠀⠀⡠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀⠀⠸⡀⠀⠀⠀⢀⠇⠀⠀⠸⡀⠀⠀⠀⢰⠁⠀│ │⠉⡹⠉⠉⠉⠉⡏⠉⠉⠉⢹⠉⠉⠉⠉⡏⠉⠉⠉⢹⠉⠉⠉⠉⡏⠉⠉⠉⢹⠉⠉⠉⠉⡏⠉⠉⠉⢹⠉⠉│ │⡰⠁⠀⠀⠀⠀⠘⡄⠀⠀⡎⠀⠀⠀⠀⢸⠀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡜⠀⠀⠀⠀⢇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⢱⠀⢰⠁⠀⠀⠀⠀⠈⡆⠀⢀⠇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⢣⡇⠀⠀⠀⠀⠀⠀⢱⠀⢸⠀⠀⠀⠀⠀⠀⡇⠀⢰⠁⠀⠀⠀⠀⠸⡀⠀⢀⠇⠀⠀│ -25 │⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠘⡄⡎⠀⠀⠀⠀⠀⠀⢣⠀⣸⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-ylabel.txt0000664000175000017500000000467114762626417023453 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀│ │⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ Y-LABEL │⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤│ │⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-xlim--1-5.txt0000664000175000017500000000445114762626417023525 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠜⠈⡆⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠊⠣⡀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⠀⠀⠘⡄⠀⠀⠀⠀│ │⠤⠤⠤⠤⠤⠤⢼⠤⠤⠤⠤⠤⠤⠤⠤⢤⠴⠥⠤⠤⠤⠵⢤⠤⠤⠤⠤⠤⠤⢤⠮⠤⠤⠤⠤⠼⡤⠤⠤⠤│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⢀⠔⠁⠀⠀⠀⠀⠀⠀⠈⠢⡀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⢱⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠲⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ └────────────────────────────────────────┘ -1 5 youplot-0.4.6/test/fixtures/simple-lineplot-xlim--1-5-ylim--25-50.txt0000664000175000017500000000445114762626417025220 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢳⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠈⡆⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⢣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡎⠀⠀⠸⡀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠀⢣⠀⠀⠀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠀⢣⠀⠀⠀⠀│ │⠉⠉⠉⠉⠉⠉⢹⠉⠉⠉⠉⠉⠉⠉⠉⡩⠋⠉⠉⠉⠉⠉⠹⡉⠉⠉⠉⠉⠉⡹⠉⠉⠉⠉⠉⠉⡏⠉⠉⠉│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⢀⠜⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⡄⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⠀│ │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠀│ -25 │⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀│ └────────────────────────────────────────┘ -1 5 youplot-0.4.6/test/fixtures/simple-lineplot-xlabel.txt0000664000175000017500000000451114762626417023443 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀│ │⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ │⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤│ │⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 X-LABEL youplot-0.4.6/test/fixtures/simple-lineplot-width-17.txt0000664000175000017500000000217514762626417023544 0ustar terceiroterceiro ┌─────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⠀⢸⢣⠀⠀⢸│ │⠀⠀⠀⠀⠀⢠⠀⠀⠀⣿⠀⠀⢸⢸⠀⠀⡇│ │⠀⠀⠀⠀⠀⣾⠀⠀⢰⢹⠀⠀⢸⢸⠀⠀⡇│ │⠀⡸⡄⠀⢀⠇⡇⠀⢸⠈⡆⠀⡎⢸⠀⠀⡇│ │⢤⠧⢧⠤⢼⠤⡧⠤⡼⠤⡧⠤⡧⠬⡦⠤⡧│ │⡎⠀⠸⡀⡎⠀⢸⠀⡇⠀⡇⠀⡇⠀⡇⢸⠀│ │⠁⠀⠀⡇⡇⠀⢸⠀⡇⠀⢸⢠⠃⠀⡇⢸⠀│ │⠀⠀⠀⠸⠀⠀⠀⣿⠀⠀⢸⢸⠀⠀⢇⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠸⣸⠀⠀⢸⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⡟⠀⠀⢸⡇⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠇⠀⠀⢸⡇⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀│ └─────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-padding-17.txt0000664000175000017500000000553114762626417024032 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀│ │⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ │⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤│ │⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-no-grid.txt0000664000175000017500000000445114762626417023536 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀│ │⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ │⠀⢀⠜⠀⠀⠱⡀⠀⠀⠀⢀⠇⠀⠀⠘⡄⠀⠀⠀⢠⠃⠀⠀⠈⡆⠀⠀⠀⢰⠁⠀⠀⠈⡆⠀⠀⠀⢸⠀⠀│ │⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-margin-17.txt0000664000175000017500000000504514762626417023701 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀│ │⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀│ │⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤│ │⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-height-17.txt0000664000175000017500000000506714762626417023700 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⢸│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠀⠀⠀⠀⠀⠀⡸⢸⠀⠀⠀⠀⠀⠀⠀⡇│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢸⠀⠀⠀⠀⠀⠀⠀⡇⠸⡀⠀⠀⠀⠀⠀⢸⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢣⠀⠀⠀⠀⠀⠀⠀⡇⠘⡄⠀⠀⠀⠀⠀⢰⠁⠀⡇⠀⠀⠀⠀⠀⡸⠀│ │⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⡎⠘⡄⠀⠀⠀⠀⠀⢰⠁⠀⢇⠀⠀⠀⠀⠀⡸⠀⠀⢣⠀⠀⠀⠀⠀⡇⠀│ │⠀⠀⢀⠜⠘⡄⠀⠀⠀⠀⠀⢸⠀⠀⢱⠀⠀⠀⠀⠀⡜⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⢀⠇⠀│ │⠤⢤⠮⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤│ │⡰⠁⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⢇⠀⠀⠀⡸⠀⠀│ │⠁⠀⠀⠀⠀⠀⠀⢣⠀⢰⠁⠀⠀⠀⠀⠈⡆⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⢣⠇⠀⠀⠀⠀⠀⠀⢱⠀⢸⠀⠀⠀⠀⠀⠀⡇⠀⢰⠁⠀⠀⠀⠀⠘⡄⠀⢠⠃⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⡇⠀⠀⠀⠀⠀⠀⢱⠀⡸⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠘⡄⡇⠀⠀⠀⠀⠀⠀⢱⠀⡜⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⠁⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠀⠀⠀⠀⠀⠀⠀⠀⣧⠃⠀⠀⠀│ -50 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⠀⠀⠀⠀│ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-canvas-dot.txt0000664000175000017500000000217114762626417024233 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │ :│ │ . :│ │ :: :│ │ .: :: .'│ │ . :: :'. : │ │ :: .' : : : : │ │ .: .' : : : : : : │ │..:..:.....:..:.....:..:.....:..:....:..│ │.' : : : : : : : : │ │' : .' '. : : : : : │ │ :' : : : : '. .' │ │ :: : : : : │ │ ' :: : : │ │ : '.' │ -50 │ : │ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-canvas-density.txt0000664000175000017500000000256114762626417025127 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │ ░│ │ ░ ░│ │ ░░ ░│ │ ░▒ ░░ ░░│ │ ░ ░░ ░░░ ░ │ │ ░░ ░░ ░ ░ ░ ░ │ │ ░▒ ░░ ░ ░ ░ ░ ░ ░ │ │░░▒░░▒░░░░░▒░░░░░░░░▒░░░░░░░░░░░░░░░░▒░░│ │░░ ░ ░ ░ ░ ░ ░ ░ ░ │ │░ ░ ░░ ░░ ░ ░ ░ ░ ░ │ │ ▒░ ░ ░ ░ ░ ░░ ░░ │ │ ░░ ░ ░ ░ ░ │ │ ░ ░░ ░ ░ │ │ ▓ ░░░ │ -50 │ █ │ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-canvas-ascii.txt0000664000175000017500000000217114762626417024535 0ustar terceiroterceiro ┌────────────────────────────────────────┐ 50 │ |│ │ ., /│ │ .\ /│ │ .\ |\ .`│ │ , /\ ,`", . │ │ /|. .` . / \ | │ │ .\. .` \ / l / \ | │ │-----^r----^---r--------r--------r---|--│ │.` \. | \ / | | \ | │ │` \./ . .` |. | \ | │ │ \` |./ . . ", ,` │ │ \` \ | \ / │ │ " |` \ | │ │ / ",` │ -50 │ Y │ └────────────────────────────────────────┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-border-corners.txt0000664000175000017500000000411514762626417025122 0ustar terceiroterceiro ┌ ┐ 50 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀ ⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀ ⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤ ⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀ ⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀ -50 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀ └ ┘ 1 10 youplot-0.4.6/test/fixtures/simple-lineplot-border-barplot.txt0000664000175000017500000000415314762626417025114 0ustar terceiroterceiro ┌ ┐ 50 ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡸ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⢇⠀⠀⠀⠀⠀⠀⠀⡇ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢇⠀⠀⠀⠀⠀⠀⠀⡎⢸⠀⠀⠀⠀⠀⠀⢠⠃ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⡜⢸⠀⠀⠀⠀⠀⠀⢠⠃⠈⡆⠀⠀⠀⠀⠀⢸⠀ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠸⡀⠀⠀⠀⠀⠀⢠⠃⠀⡇⠀⠀⠀⠀⠀⢸⠀⠀⢇⠀⠀⠀⠀⠀⡎⠀ ┤⠀⠀⠀⡠⠳⡀⠀⠀⠀⠀⠀⢠⠃⠀⢣⠀⠀⠀⠀⠀⡜⠀⠀⢱⠀⠀⠀⠀⠀⡇⠀⠀⢸⠀⠀⠀⠀⠀⡇⠀ ┤⠤⢤⠼⠤⠤⠵⡤⠤⠤⠤⢤⠧⠤⠤⠼⡤⠤⠤⠤⢤⠧⠤⠤⠬⡦⠤⠤⠤⢴⠥⠤⠤⠬⡦⠤⠤⠤⢼⠤⠤ ┤⡠⠃⠀⠀⠀⠀⠱⡀⠀⠀⡜⠀⠀⠀⠀⢱⠀⠀⠀⡸⠀⠀⠀⠀⢣⠀⠀⠀⡸⠀⠀⠀⠀⡇⠀⠀⠀⡜⠀⠀ ┤⠁⠀⠀⠀⠀⠀⠀⠱⡀⡰⠁⠀⠀⠀⠀⠀⡇⠀⢀⠇⠀⠀⠀⠀⠸⡀⠀⠀⡇⠀⠀⠀⠀⢸⠀⠀⠀⡇⠀⠀ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠱⠃⠀⠀⠀⠀⠀⠀⠸⡀⡸⠀⠀⠀⠀⠀⠀⢇⠀⢸⠀⠀⠀⠀⠀⠘⡄⠀⢰⠁⠀⠀ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡎⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⠀⠀ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⣇⠇⠀⠀⠀⠀⠀⠀⢸⠀⡇⠀⠀⠀ ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⠀⠀⠀⠀⠀⠀⠀⠘⣄⠇⠀⠀⠀ -50 ┤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀ └ ┘ 1 10 youplot-0.4.6/test/fixtures/simple-histogram.txt0000664000175000017500000000164414762626417022351 0ustar terceiroterceiro ┌ ┐ [-60.0, -40.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 1 [-40.0, -20.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 2 [-20.0, 0.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 2 [ 0.0, 20.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 1 [ 20.0, 40.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 2 [ 40.0, 60.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 2 └ ┘ Frequency youplot-0.4.6/test/fixtures/simple-histogram-symbol-@.txt0000664000175000017500000000106014762626417024021 0ustar terceiroterceiro ┌ ┐ [-60.0, -40.0) ┤@@@@@@@@@@@@@@@@@@@ 1 [-40.0, -20.0) ┤@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 [-20.0, 0.0) ┤@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 [ 0.0, 20.0) ┤@@@@@@@@@@@@@@@@@@@ 1 [ 20.0, 40.0) ┤@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 [ 40.0, 60.0) ┤@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 2 └ ┘ Frequency youplot-0.4.6/test/fixtures/simple-count.txt0000664000175000017500000000247414762626417021506 0ustar terceiroterceiro ┌ ┐ -10 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 -20 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 -30 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 -40 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 -50 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 10 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 20 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 30 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 40 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 50 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 1.0 └ ┘ youplot-0.4.6/test/fixtures/simple-boxplot.txt0000664000175000017500000000067114762626417022042 0ustar terceiroterceiro ┌ ┐ ╷ ┌──────────┬──────────┐ ╷ 1 ├───────┤ │ ├────────┤ ╵ └──────────┴──────────┘ ╵ └ ┘ -50 0 50 youplot-0.4.6/test/fixtures/iris_utf16.csv0000664000175000017500000002200414762626417021025 0ustar terceiroterceirosepal_length,sepal_width,petal_length,petal_width,species 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa 5.0,3.4,1.5,0.2,Iris-setosa 4.4,2.9,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5.4,3.7,1.5,0.2,Iris-setosa 4.8,3.4,1.6,0.2,Iris-setosa 4.8,3.0,1.4,0.1,Iris-setosa 4.3,3.0,1.1,0.1,Iris-setosa 5.8,4.0,1.2,0.2,Iris-setosa 5.7,4.4,1.5,0.4,Iris-setosa 5.4,3.9,1.3,0.4,Iris-setosa 5.1,3.5,1.4,0.3,Iris-setosa 5.7,3.8,1.7,0.3,Iris-setosa 5.1,3.8,1.5,0.3,Iris-setosa 5.4,3.4,1.7,0.2,Iris-setosa 5.1,3.7,1.5,0.4,Iris-setosa 4.6,3.6,1.0,0.2,Iris-setosa 5.1,3.3,1.7,0.5,Iris-setosa 4.8,3.4,1.9,0.2,Iris-setosa 5.0,3.0,1.6,0.2,Iris-setosa 5.0,3.4,1.6,0.4,Iris-setosa 5.2,3.5,1.5,0.2,Iris-setosa 5.2,3.4,1.4,0.2,Iris-setosa 4.7,3.2,1.6,0.2,Iris-setosa 4.8,3.1,1.6,0.2,Iris-setosa 5.4,3.4,1.5,0.4,Iris-setosa 5.2,4.1,1.5,0.1,Iris-setosa 5.5,4.2,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5.0,3.2,1.2,0.2,Iris-setosa 5.5,3.5,1.3,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 4.4,3.0,1.3,0.2,Iris-setosa 5.1,3.4,1.5,0.2,Iris-setosa 5.0,3.5,1.3,0.3,Iris-setosa 4.5,2.3,1.3,0.3,Iris-setosa 4.4,3.2,1.3,0.2,Iris-setosa 5.0,3.5,1.6,0.6,Iris-setosa 5.1,3.8,1.9,0.4,Iris-setosa 4.8,3.0,1.4,0.3,Iris-setosa 5.1,3.8,1.6,0.2,Iris-setosa 4.6,3.2,1.4,0.2,Iris-setosa 5.3,3.7,1.5,0.2,Iris-setosa 5.0,3.3,1.4,0.2,Iris-setosa 7.0,3.2,4.7,1.4,Iris-versicolor 6.4,3.2,4.5,1.5,Iris-versicolor 6.9,3.1,4.9,1.5,Iris-versicolor 5.5,2.3,4.0,1.3,Iris-versicolor 6.5,2.8,4.6,1.5,Iris-versicolor 5.7,2.8,4.5,1.3,Iris-versicolor 6.3,3.3,4.7,1.6,Iris-versicolor 4.9,2.4,3.3,1.0,Iris-versicolor 6.6,2.9,4.6,1.3,Iris-versicolor 5.2,2.7,3.9,1.4,Iris-versicolor 5.0,2.0,3.5,1.0,Iris-versicolor 5.9,3.0,4.2,1.5,Iris-versicolor 6.0,2.2,4.0,1.0,Iris-versicolor 6.1,2.9,4.7,1.4,Iris-versicolor 5.6,2.9,3.6,1.3,Iris-versicolor 6.7,3.1,4.4,1.4,Iris-versicolor 5.6,3.0,4.5,1.5,Iris-versicolor 5.8,2.7,4.1,1.0,Iris-versicolor 6.2,2.2,4.5,1.5,Iris-versicolor 5.6,2.5,3.9,1.1,Iris-versicolor 5.9,3.2,4.8,1.8,Iris-versicolor 6.1,2.8,4.0,1.3,Iris-versicolor 6.3,2.5,4.9,1.5,Iris-versicolor 6.1,2.8,4.7,1.2,Iris-versicolor 6.4,2.9,4.3,1.3,Iris-versicolor 6.6,3.0,4.4,1.4,Iris-versicolor 6.8,2.8,4.8,1.4,Iris-versicolor 6.7,3.0,5.0,1.7,Iris-versicolor 6.0,2.9,4.5,1.5,Iris-versicolor 5.7,2.6,3.5,1.0,Iris-versicolor 5.5,2.4,3.8,1.1,Iris-versicolor 5.5,2.4,3.7,1.0,Iris-versicolor 5.8,2.7,3.9,1.2,Iris-versicolor 6.0,2.7,5.1,1.6,Iris-versicolor 5.4,3.0,4.5,1.5,Iris-versicolor 6.0,3.4,4.5,1.6,Iris-versicolor 6.7,3.1,4.7,1.5,Iris-versicolor 6.3,2.3,4.4,1.3,Iris-versicolor 5.6,3.0,4.1,1.3,Iris-versicolor 5.5,2.5,4.0,1.3,Iris-versicolor 5.5,2.6,4.4,1.2,Iris-versicolor 6.1,3.0,4.6,1.4,Iris-versicolor 5.8,2.6,4.0,1.2,Iris-versicolor 5.0,2.3,3.3,1.0,Iris-versicolor 5.6,2.7,4.2,1.3,Iris-versicolor 5.7,3.0,4.2,1.2,Iris-versicolor 5.7,2.9,4.2,1.3,Iris-versicolor 6.2,2.9,4.3,1.3,Iris-versicolor 5.1,2.5,3.0,1.1,Iris-versicolor 5.7,2.8,4.1,1.3,Iris-versicolor 6.3,3.3,6.0,2.5,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 7.1,3.0,5.9,2.1,Iris-virginica 6.3,2.9,5.6,1.8,Iris-virginica 6.5,3.0,5.8,2.2,Iris-virginica 7.6,3.0,6.6,2.1,Iris-virginica 4.9,2.5,4.5,1.7,Iris-virginica 7.3,2.9,6.3,1.8,Iris-virginica 6.7,2.5,5.8,1.8,Iris-virginica 7.2,3.6,6.1,2.5,Iris-virginica 6.5,3.2,5.1,2.0,Iris-virginica 6.4,2.7,5.3,1.9,Iris-virginica 6.8,3.0,5.5,2.1,Iris-virginica 5.7,2.5,5.0,2.0,Iris-virginica 5.8,2.8,5.1,2.4,Iris-virginica 6.4,3.2,5.3,2.3,Iris-virginica 6.5,3.0,5.5,1.8,Iris-virginica 7.7,3.8,6.7,2.2,Iris-virginica 7.7,2.6,6.9,2.3,Iris-virginica 6.0,2.2,5.0,1.5,Iris-virginica 6.9,3.2,5.7,2.3,Iris-virginica 5.6,2.8,4.9,2.0,Iris-virginica 7.7,2.8,6.7,2.0,Iris-virginica 6.3,2.7,4.9,1.8,Iris-virginica 6.7,3.3,5.7,2.1,Iris-virginica 7.2,3.2,6.0,1.8,Iris-virginica 6.2,2.8,4.8,1.8,Iris-virginica 6.1,3.0,4.9,1.8,Iris-virginica 6.4,2.8,5.6,2.1,Iris-virginica 7.2,3.0,5.8,1.6,Iris-virginica 7.4,2.8,6.1,1.9,Iris-virginica 7.9,3.8,6.4,2.0,Iris-virginica 6.4,2.8,5.6,2.2,Iris-virginica 6.3,2.8,5.1,1.5,Iris-virginica 6.1,2.6,5.6,1.4,Iris-virginica 7.7,3.0,6.1,2.3,Iris-virginica 6.3,3.4,5.6,2.4,Iris-virginica 6.4,3.1,5.5,1.8,Iris-virginica 6.0,3.0,4.8,1.8,Iris-virginica 6.9,3.1,5.4,2.1,Iris-virginica 6.7,3.1,5.6,2.4,Iris-virginica 6.9,3.1,5.1,2.3,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 6.8,3.2,5.9,2.3,Iris-virginica 6.7,3.3,5.7,2.5,Iris-virginica 6.7,3.0,5.2,2.3,Iris-virginica 6.3,2.5,5.0,1.9,Iris-virginica 6.5,3.0,5.2,2.0,Iris-virginica 6.2,3.4,5.4,2.3,Iris-virginica 5.9,3.0,5.1,1.8,Iris-virginica youplot-0.4.6/test/fixtures/iris.csv0000664000175000017500000001100114762626417017773 0ustar terceiroterceirosepal_length,sepal_width,petal_length,petal_width,species 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa 5.0,3.4,1.5,0.2,Iris-setosa 4.4,2.9,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5.4,3.7,1.5,0.2,Iris-setosa 4.8,3.4,1.6,0.2,Iris-setosa 4.8,3.0,1.4,0.1,Iris-setosa 4.3,3.0,1.1,0.1,Iris-setosa 5.8,4.0,1.2,0.2,Iris-setosa 5.7,4.4,1.5,0.4,Iris-setosa 5.4,3.9,1.3,0.4,Iris-setosa 5.1,3.5,1.4,0.3,Iris-setosa 5.7,3.8,1.7,0.3,Iris-setosa 5.1,3.8,1.5,0.3,Iris-setosa 5.4,3.4,1.7,0.2,Iris-setosa 5.1,3.7,1.5,0.4,Iris-setosa 4.6,3.6,1.0,0.2,Iris-setosa 5.1,3.3,1.7,0.5,Iris-setosa 4.8,3.4,1.9,0.2,Iris-setosa 5.0,3.0,1.6,0.2,Iris-setosa 5.0,3.4,1.6,0.4,Iris-setosa 5.2,3.5,1.5,0.2,Iris-setosa 5.2,3.4,1.4,0.2,Iris-setosa 4.7,3.2,1.6,0.2,Iris-setosa 4.8,3.1,1.6,0.2,Iris-setosa 5.4,3.4,1.5,0.4,Iris-setosa 5.2,4.1,1.5,0.1,Iris-setosa 5.5,4.2,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 5.0,3.2,1.2,0.2,Iris-setosa 5.5,3.5,1.3,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa 4.4,3.0,1.3,0.2,Iris-setosa 5.1,3.4,1.5,0.2,Iris-setosa 5.0,3.5,1.3,0.3,Iris-setosa 4.5,2.3,1.3,0.3,Iris-setosa 4.4,3.2,1.3,0.2,Iris-setosa 5.0,3.5,1.6,0.6,Iris-setosa 5.1,3.8,1.9,0.4,Iris-setosa 4.8,3.0,1.4,0.3,Iris-setosa 5.1,3.8,1.6,0.2,Iris-setosa 4.6,3.2,1.4,0.2,Iris-setosa 5.3,3.7,1.5,0.2,Iris-setosa 5.0,3.3,1.4,0.2,Iris-setosa 7.0,3.2,4.7,1.4,Iris-versicolor 6.4,3.2,4.5,1.5,Iris-versicolor 6.9,3.1,4.9,1.5,Iris-versicolor 5.5,2.3,4.0,1.3,Iris-versicolor 6.5,2.8,4.6,1.5,Iris-versicolor 5.7,2.8,4.5,1.3,Iris-versicolor 6.3,3.3,4.7,1.6,Iris-versicolor 4.9,2.4,3.3,1.0,Iris-versicolor 6.6,2.9,4.6,1.3,Iris-versicolor 5.2,2.7,3.9,1.4,Iris-versicolor 5.0,2.0,3.5,1.0,Iris-versicolor 5.9,3.0,4.2,1.5,Iris-versicolor 6.0,2.2,4.0,1.0,Iris-versicolor 6.1,2.9,4.7,1.4,Iris-versicolor 5.6,2.9,3.6,1.3,Iris-versicolor 6.7,3.1,4.4,1.4,Iris-versicolor 5.6,3.0,4.5,1.5,Iris-versicolor 5.8,2.7,4.1,1.0,Iris-versicolor 6.2,2.2,4.5,1.5,Iris-versicolor 5.6,2.5,3.9,1.1,Iris-versicolor 5.9,3.2,4.8,1.8,Iris-versicolor 6.1,2.8,4.0,1.3,Iris-versicolor 6.3,2.5,4.9,1.5,Iris-versicolor 6.1,2.8,4.7,1.2,Iris-versicolor 6.4,2.9,4.3,1.3,Iris-versicolor 6.6,3.0,4.4,1.4,Iris-versicolor 6.8,2.8,4.8,1.4,Iris-versicolor 6.7,3.0,5.0,1.7,Iris-versicolor 6.0,2.9,4.5,1.5,Iris-versicolor 5.7,2.6,3.5,1.0,Iris-versicolor 5.5,2.4,3.8,1.1,Iris-versicolor 5.5,2.4,3.7,1.0,Iris-versicolor 5.8,2.7,3.9,1.2,Iris-versicolor 6.0,2.7,5.1,1.6,Iris-versicolor 5.4,3.0,4.5,1.5,Iris-versicolor 6.0,3.4,4.5,1.6,Iris-versicolor 6.7,3.1,4.7,1.5,Iris-versicolor 6.3,2.3,4.4,1.3,Iris-versicolor 5.6,3.0,4.1,1.3,Iris-versicolor 5.5,2.5,4.0,1.3,Iris-versicolor 5.5,2.6,4.4,1.2,Iris-versicolor 6.1,3.0,4.6,1.4,Iris-versicolor 5.8,2.6,4.0,1.2,Iris-versicolor 5.0,2.3,3.3,1.0,Iris-versicolor 5.6,2.7,4.2,1.3,Iris-versicolor 5.7,3.0,4.2,1.2,Iris-versicolor 5.7,2.9,4.2,1.3,Iris-versicolor 6.2,2.9,4.3,1.3,Iris-versicolor 5.1,2.5,3.0,1.1,Iris-versicolor 5.7,2.8,4.1,1.3,Iris-versicolor 6.3,3.3,6.0,2.5,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 7.1,3.0,5.9,2.1,Iris-virginica 6.3,2.9,5.6,1.8,Iris-virginica 6.5,3.0,5.8,2.2,Iris-virginica 7.6,3.0,6.6,2.1,Iris-virginica 4.9,2.5,4.5,1.7,Iris-virginica 7.3,2.9,6.3,1.8,Iris-virginica 6.7,2.5,5.8,1.8,Iris-virginica 7.2,3.6,6.1,2.5,Iris-virginica 6.5,3.2,5.1,2.0,Iris-virginica 6.4,2.7,5.3,1.9,Iris-virginica 6.8,3.0,5.5,2.1,Iris-virginica 5.7,2.5,5.0,2.0,Iris-virginica 5.8,2.8,5.1,2.4,Iris-virginica 6.4,3.2,5.3,2.3,Iris-virginica 6.5,3.0,5.5,1.8,Iris-virginica 7.7,3.8,6.7,2.2,Iris-virginica 7.7,2.6,6.9,2.3,Iris-virginica 6.0,2.2,5.0,1.5,Iris-virginica 6.9,3.2,5.7,2.3,Iris-virginica 5.6,2.8,4.9,2.0,Iris-virginica 7.7,2.8,6.7,2.0,Iris-virginica 6.3,2.7,4.9,1.8,Iris-virginica 6.7,3.3,5.7,2.1,Iris-virginica 7.2,3.2,6.0,1.8,Iris-virginica 6.2,2.8,4.8,1.8,Iris-virginica 6.1,3.0,4.9,1.8,Iris-virginica 6.4,2.8,5.6,2.1,Iris-virginica 7.2,3.0,5.8,1.6,Iris-virginica 7.4,2.8,6.1,1.9,Iris-virginica 7.9,3.8,6.4,2.0,Iris-virginica 6.4,2.8,5.6,2.2,Iris-virginica 6.3,2.8,5.1,1.5,Iris-virginica 6.1,2.6,5.6,1.4,Iris-virginica 7.7,3.0,6.1,2.3,Iris-virginica 6.3,3.4,5.6,2.4,Iris-virginica 6.4,3.1,5.5,1.8,Iris-virginica 6.0,3.0,4.8,1.8,Iris-virginica 6.9,3.1,5.4,2.1,Iris-virginica 6.7,3.1,5.6,2.4,Iris-virginica 6.9,3.1,5.1,2.3,Iris-virginica 5.8,2.7,5.1,1.9,Iris-virginica 6.8,3.2,5.9,2.3,Iris-virginica 6.7,3.3,5.7,2.5,Iris-virginica 6.7,3.0,5.2,2.3,Iris-virginica 6.3,2.5,5.0,1.9,Iris-virginica 6.5,3.0,5.2,2.0,Iris-virginica 6.2,3.4,5.4,2.3,Iris-virginica 5.9,3.0,5.1,1.8,Iris-virginica youplot-0.4.6/test/fixtures/iris-scatter.txt0000664000175000017500000000507114762626417021474 0ustar terceiroterceiro IRIS-SCATTER ┌────────────────────────────────────────┐ 6.9 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠘⠀⠀│ sepal_width │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠂⠄⠀⠀⠠⠀⠈│ petal_length │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⡀⡀⠂⠀⢰⠈⠠⠀⠀⠁⠂⠀⠀⠀⠀⠀⠀⠀│ petal_width │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢀⢀⠀⠀⠂⡀⠃⡅⠀⠠⠈⢐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ species │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠈⠀⠠⠨⢐⠀⠄⡃⠀⠀⠀⢈⠠⠐⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠁⡂⡁⢘⠀⢀⠈⠈⠀⠅⠂⠅⠁⠘⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⢠⠀⠅⡀⡄⡆⠅⠨⠸⠀⠐⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠠│ │⠀⠀⠀⠅⠀⠠⢀⢸⢰⠀⠆⠀⠄⠂⠁⠐⠀⠀⠠⠀⠀⠄⡄⠀⠀⠀⢀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀│ │⠂⠇⠀⠃⠁⠐⠐⠘⠐⠀⠀⠀⠂⠀⡆⢰⢀⠘⠰⢰⠀⡄⡄⡇⡃⠰⠐⢘⠘⠈⠀⠂⠃⠄⡀⠀⠐⢐⠀⠀│ │⠀⠀⠀⠀⠀⠀⢠⠀⠠⠀⠁⠀⠀⡆⠅⠰⢘⠀⠈⠐⠀⠀⡅⠁⠀⠀⢠⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠐⠀⠀│ │⠀⠀⠁⠀⠀⢀⠀⠨⢀⠀⠀⠀⠀⠁⠄⠠⢀⠀⠈⠀⠀⠁⡁⡃⠅⠀⠘⠘⠘⠀⠀⠂⠀⠀⡀⠀⠐⠨⠀⠠│ │⠀⡀⠀⡄⠄⢠⢰⢠⢰⠀⡄⠄⠆⡀⠄⠰⠀⠨⠨⢈⠀⠅⠅⠅⠅⢀⢸⢀⠠⢀⠀⠀⠅⠁⠀⠀⠀⠀⠀⠀│ │⠄⠁⠁⡀⠁⠀⢀⢘⠠⠀⠀⠀⠁⡇⠅⢘⢐⠀⢀⠘⠀⠁⠁⠁⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠠⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ 0 │⡀⡄⡂⡆⡄⢰⢠⢸⢸⠀⡄⡄⡅⡄⡀⢘⢠⢀⢀⢀⠀⡀⡀⡀⡀⢀⢀⢀⢀⢀⠀⡀⡀⡀⡀⠀⢀⢀⠀⢀│ └────────────────────────────────────────┘ 4.3 7.9 sepal_length youplot-0.4.6/test/fixtures/iris-lineplots.txt0000664000175000017500000000507214762626417022041 0ustar terceiroterceiro IRIS-LINEPLOTS ┌────────────────────────────────────────┐ 6.9 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣴⡮⠟⠀⠀│ sepal_width │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⣀⣀⣤⣴⣶⣿⣟⣯⣥⣔⣲⠊⠉│ petal_length │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣔⢾⣥⣤⣶⣿⣿⣿⣿⠿⠛⠛⠋⠉⠀⠀⠀⠀⠀⠀│ petal_width │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣛⣗⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ species │⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⠤⠔⠒⣋⡻⠭⠛⣩⡿⣟⣷⣽⣫⣥⣒⣲⣭⣶⣒⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⢀⣉⡟⣛⣿⣝⣻⣿⣿⣿⠿⢿⣿⡿⠿⣛⠤⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣿⣷⣿⣿⣿⣿⣿⠿⠿⠛⠋⠉⠁⣀⠔⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⢀⣠│ │⠀⢀⣀⣭⣿⣿⣿⣿⣿⣿⣿⣿⣽⣖⣋⣙⣀⣀⣤⣤⣤⣔⣮⣤⣄⣀⣀⣤⣤⣔⣶⣾⡳⠮⠝⠓⢊⢽⠋⠀│ │⠒⢷⠿⠿⢛⠟⠛⠙⠑⠚⠉⠀⠲⣶⣿⣿⣶⣿⣷⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣷⣾⠀⠀│ │⠀⠸⡠⠔⠁⠀⢠⡤⣴⣶⣿⣿⠿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣟⣟⣉⣉⣩⣛⣛⣭⣭⣥⣤⣤⣔⣒⣒⡚⠀⠀│ │⠀⠀⠁⠀⠀⢀⡀⠨⢞⠊⢉⡠⠔⠉⠤⠴⢥⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣷⣶⣶⣶⣶⣿⣿⡭⠤⠤│ │⠀⣀⣀⣄⣤⣤⣽⣿⣿⣿⣿⣿⣿⡿⣿⣿⣽⣽⣯⣭⣿⣿⣿⣿⣿⣿⣿⣭⣭⣉⠛⠛⠝⠉⠀⠀⠀⠀⠀⠀│ │⠤⠿⠿⡯⠽⠿⢭⣽⣶⡾⠿⠿⠿⣿⠿⣿⢟⠿⢻⠟⠛⣛⣛⠯⠭⠝⠒⠊⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⢀⣀⡠⣀⠀⠀⠀⢀⣀⡠⠤⠤⠒⠒⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ 0 │⣀⣴⣶⣾⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀│ └────────────────────────────────────────┘ 4.3 7.9 sepal_length youplot-0.4.6/test/fixtures/iris-lineplot.txt0000664000175000017500000000506614762626417021661 0ustar terceiroterceiro IRIS-LINEPLOT ┌────────────────────────────────────────┐ 5 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠎⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡔⠒⣽⠋⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⣼⠇⡠⠠⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ │⠀⠀⠀⠀⠀⢀⣀⣀⠤⢤⣼⢿⣿⣿⠯⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠤⢊⡧⡺⠁│ sepal_width │⠀⠀⠀⠀⠀⠈⢑⠦⣺⣵⣿⣿⡝⢵⡠⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠔⣺⠥⢊⠥⠊⠁⡷⠁⠀│ │⠀⠀⠀⠀⢀⡨⡽⣿⣯⢟⣿⡯⠿⠭⠥⠤⠤⢤⠤⠮⢍⣕⣣⣏⣉⣒⣦⣶⣭⣤⣺⣥⠊⠁⠀⠀⡰⡇⠀⠀│ │⠀⠀⠀⡠⣗⣭⣞⣿⣾⣟⡇⠀⠀⠀⢀⠤⢊⣁⣰⣣⣾⣟⣥⣾⣿⣽⢿⣿⡿⡿⠛⠉⠓⠢⠤⣴⣁⡇⠀⠀│ │⠀⠀⠈⠉⡟⠋⠉⡝⠀⠉⠁⠀⠀⠀⠉⢺⣷⣷⢿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣯⢿⡿⢟⡻⠋⠉⡇⠀⠀│ │⠀⠀⠀⠀⢱⠀⡰⠁⠀⠀⠀⢀⢖⣶⣾⣿⣿⣻⡿⣿⣿⣿⣿⢿⣿⠟⠛⢻⢛⡻⠛⠉⠉⠉⠉⠉⠉⡇⠀⠀│ │⠀⠀⠀⠀⢸⢠⠃⠀⠀⢔⣶⡾⡿⣟⡿⢿⠷⣟⡿⢿⡟⢅⡱⢏⠎⠀⠀⠗⢁⣀⣀⠤⠤⠒⠒⠉⠉⠁⠀⠀│ │⠀⠀⠀⠀⠸⠇⠀⠀⠀⠁⢴⠋⡩⠊⠀⠗⠋⠁⠉⢺⣷⣎⡱⠮⠔⠒⠊⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ 2 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡮⠊⠀⠀⠀⠀⠀⠀⠀⠀⠁⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│ └────────────────────────────────────────┘ 4 8 sepal_length youplot-0.4.6/test/fixtures/iris-histogram.txt0000664000175000017500000000200214762626417022013 0ustar terceiroterceiro IRIS-HISTOGRAM ┌ ┐ [4.0, 4.5) ┤▇▇▇▇▇ 4 [4.5, 5.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 18 [5.0, 5.5) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 30 [5.5, 6.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 31 [6.0, 6.5) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 32 [6.5, 7.0) ┤▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 22 [7.0, 7.5) ┤▇▇▇▇▇▇▇▇ 7 [7.5, 8.0) ┤▇▇▇▇▇▇▇ 6 └ ┘ Frequency youplot-0.4.6/test/fixtures/iris-density.txt0000664000175000017500000000304314762626417021503 0ustar terceiroterceiro IRIS-DENSITY ┌────────────────────────────────────────┐ 6.9 │ ░ │ sepal_width │ │ petal_length │ ░ │ petal_width │ ░ ░░ │ species │ ░ ░ │ │ ░ │ │ ░ ░░ ░ │ │ ▒░ ░ │ │ ░ ░░ ░░ ░ ░ ░░ ░░░ │ │ ░ ░ ░ ░ │ │ ░░ ░ ░ │ │ ░ ░░░▒ ░ ░ ░░░ ░ ░ │ │ ░ ░░░░ │ │ │ 0 │ ░ ▒░▒▒██ ▒ ▓▒░▒▒░░░ ░▒▒░ ▒░░ ░ ░ │ └────────────────────────────────────────┘ 4.3 7.9 sepal_length youplot-0.4.6/test/fixtures/iris-count.txt0000664000175000017500000000570514762626417021163 0ustar terceiroterceiro sepal_length ┌ ┐ 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 10.0 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 9.0 6.3 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 9.0 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 8.0 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 8.0 5.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 7.0 5.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 7.0 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 7.0 4.9 ┤■■■■■■■■■■■■■■■■■■■■ 6.0 5.4 ┤■■■■■■■■■■■■■■■■■■■■ 6.0 5.6 ┤■■■■■■■■■■■■■■■■■■■■ 6.0 6.0 ┤■■■■■■■■■■■■■■■■■■■■ 6.0 6.1 ┤■■■■■■■■■■■■■■■■■■■■ 6.0 4.8 ┤■■■■■■■■■■■■■■■■■ 5.0 6.5 ┤■■■■■■■■■■■■■■■■■ 5.0 4.6 ┤■■■■■■■■■■■■■■ 4.0 5.2 ┤■■■■■■■■■■■■■■ 4.0 6.2 ┤■■■■■■■■■■■■■■ 4.0 6.9 ┤■■■■■■■■■■■■■■ 4.0 7.7 ┤■■■■■■■■■■■■■■ 4.0 4.4 ┤■■■■■■■■■■ 3.0 5.9 ┤■■■■■■■■■■ 3.0 6.8 ┤■■■■■■■■■■ 3.0 7.2 ┤■■■■■■■■■■ 3.0 4.7 ┤■■■■■■■ 2.0 6.6 ┤■■■■■■■ 2.0 4.3 ┤■■■ 1.0 4.5 ┤■■■ 1.0 5.3 ┤■■■ 1.0 7.0 ┤■■■ 1.0 7.1 ┤■■■ 1.0 7.3 ┤■■■ 1.0 7.4 ┤■■■ 1.0 7.6 ┤■■■ 1.0 7.9 ┤■■■ 1.0 └ ┘ youplot-0.4.6/test/fixtures/iris-boxplot.txt0000664000175000017500000000260614762626417021517 0ustar terceiroterceiro IRIS-BOXPLOT ┌ ┐ ╷ ┌──┬──┐ ╷ sepal_length ├───┤ │ ├───────┤ ╵ └──┴──┘ ╵ ╷ ┌┬┐ ╷ sepal_width ├───┤│├─────┤ ╵ └┴┘ ╵ ╷ ┌─────────────┬───┐ ╷ petal_length ├──┤ │ ├───────┤ ╵ └─────────────┴───┘ ╵ ╷┌───┬──┐ ╷ petal_width ├┤ │ ├──┤ ╵└───┴──┘ ╵ ╷ species ┤ ╵ └ ┘ 0 4 8 youplot-0.4.6/test/fixtures/iris-barplot.txt0000664000175000017500000003601014762626417021467 0ustar terceiroterceiro IRIS-BARPLOT ┌ ┐ 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5 4.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 4.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 4.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.6 5.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.9 4.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 4.4 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 4.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.7 4.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 4.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 4.3 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 4.0 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 4.4 5.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.9 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8 5.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.7 4.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.6 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3 4.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5 5.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 4.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 4.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 4.1 5.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 4.2 4.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 5.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5 4.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 4.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5 4.5 ┤■■■■■■■■■■■■■■■■■■ 2.3 4.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8 4.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8 4.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 5.3 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.7 5.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3 7.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.5 ┤■■■■■■■■■■■■■■■■■■ 2.3 6.5 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.3 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3 4.9 ┤■■■■■■■■■■■■■■■■■■■ 2.4 6.6 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 5.2 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 5.0 ┤■■■■■■■■■■■■■■■■ 2.0 5.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.0 ┤■■■■■■■■■■■■■■■■■■ 2.2 6.1 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 5.6 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.8 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 6.2 ┤■■■■■■■■■■■■■■■■■■ 2.2 5.6 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 5.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.1 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.3 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 6.1 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 6.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.8 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.0 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 5.7 ┤■■■■■■■■■■■■■■■■■■■■■ 2.6 5.5 ┤■■■■■■■■■■■■■■■■■■■ 2.4 5.5 ┤■■■■■■■■■■■■■■■■■■■ 2.4 5.8 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 6.0 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 5.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 6.3 ┤■■■■■■■■■■■■■■■■■■ 2.3 5.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.5 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 5.5 ┤■■■■■■■■■■■■■■■■■■■■■ 2.6 6.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.8 ┤■■■■■■■■■■■■■■■■■■■■■ 2.6 5.0 ┤■■■■■■■■■■■■■■■■■■ 2.3 5.6 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 6.2 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 5.1 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 5.7 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.3 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3 5.8 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 7.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.3 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 6.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 7.6 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 4.9 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 7.3 ┤■■■■■■■■■■■■■■■■■■■■■■■ 2.9 6.7 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 7.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.6 6.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.4 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 6.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 5.7 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 5.8 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 7.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8 7.7 ┤■■■■■■■■■■■■■■■■■■■■■ 2.6 6.0 ┤■■■■■■■■■■■■■■■■■■ 2.2 6.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 5.6 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 7.7 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.3 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3 7.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.2 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.1 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 7.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 7.4 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 7.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.3 ┤■■■■■■■■■■■■■■■■■■■■■■ 2.8 6.1 ┤■■■■■■■■■■■■■■■■■■■■■ 2.6 7.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.3 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 6.4 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 6.0 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 6.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.1 5.8 ┤■■■■■■■■■■■■■■■■■■■■■ 2.7 6.8 ┤■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3 6.7 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.3 ┤■■■■■■■■■■■■■■■■■■■■ 2.5 6.5 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 6.2 ┤■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4 5.9 ┤■■■■■■■■■■■■■■■■■■■■■■■■ 3.0 └ ┘ youplot-0.4.6/test/fixtures/colors.txt0000664000175000017500000001510414762626417020362 0ustar terceiroterceiroblack ● red ● green ● yellow ● blue ● magenta ● cyan ● white ● gray ● light_black ● light_red ● light_green ● light_yellow ● light_blue ● light_magenta ● light_cyan ● normal ● default ● bold ● underline ● blink ● reverse ● hidden ● nothing ● 0 ● 1 ● 2 ● 3 ● 4 ● 5 ● 6 ● 7 ● 8 ● 9 ● 10 ● 11 ● 12 ● 13 ● 14 ● 15 ● 16 ● 17 ● 18 ● 19 ● 20 ● 21 ● 22 ● 23 ● 24 ● 25 ● 26 ● 27 ● 28 ● 29 ● 30 ● 31 ● 32 ● 33 ● 34 ● 35 ● 36 ● 37 ● 38 ● 39 ● 40 ● 41 ● 42 ● 43 ● 44 ● 45 ● 46 ● 47 ● 48 ● 49 ● 50 ● 51 ● 52 ● 53 ● 54 ● 55 ● 56 ● 57 ● 58 ● 59 ● 60 ● 61 ● 62 ● 63 ● 64 ● 65 ● 66 ● 67 ● 68 ● 69 ● 70 ● 71 ● 72 ● 73 ● 74 ● 75 ● 76 ● 77 ● 78 ● 79 ● 80 ● 81 ● 82 ● 83 ● 84 ● 85 ● 86 ● 87 ● 88 ● 89 ● 90 ● 91 ● 92 ● 93 ● 94 ● 95 ● 96 ● 97 ● 98 ● 99 ● 100 ● 101 ● 102 ● 103 ● 104 ● 105 ● 106 ● 107 ● 108 ● 109 ● 110 ● 111 ● 112 ● 113 ● 114 ● 115 ● 116 ● 117 ● 118 ● 119 ● 120 ● 121 ● 122 ● 123 ● 124 ● 125 ● 126 ● 127 ● 128 ● 129 ● 130 ● 131 ● 132 ● 133 ● 134 ● 135 ● 136 ● 137 ● 138 ● 139 ● 140 ● 141 ● 142 ● 143 ● 144 ● 145 ● 146 ● 147 ● 148 ● 149 ● 150 ● 151 ● 152 ● 153 ● 154 ● 155 ● 156 ● 157 ● 158 ● 159 ● 160 ● 161 ● 162 ● 163 ● 164 ● 165 ● 166 ● 167 ● 168 ● 169 ● 170 ● 171 ● 172 ● 173 ● 174 ● 175 ● 176 ● 177 ● 178 ● 179 ● 180 ● 181 ● 182 ● 183 ● 184 ● 185 ● 186 ● 187 ● 188 ● 189 ● 190 ● 191 ● 192 ● 193 ● 194 ● 195 ● 196 ● 197 ● 198 ● 199 ● 200 ● 201 ● 202 ● 203 ● 204 ● 205 ● 206 ● 207 ● 208 ● 209 ● 210 ● 211 ● 212 ● 213 ● 214 ● 215 ● 216 ● 217 ● 218 ● 219 ● 220 ● 221 ● 222 ● 223 ● 224 ● 225 ● 226 ● 227 ● 228 ● 229 ● 230 ● 231 ● 232 ● 233 ● 234 ● 235 ● 236 ● 237 ● 238 ● 239 ● 240 ● 241 ● 242 ● 243 ● 244 ● 245 ● 246 ● 247 ● 248 ● 249 ● 250 ● 251 ● 252 ● 253 ● 254 ● 255 ● youplot-0.4.6/test/fixtures/IRIStsv.tsv0000664000175000017500000001056214762626417020364 0ustar terceiroterceirosepal_length sepal_width petal_length petal_width species 5.1 3.5 1.4 0.2 Iris-setosa 4.9 3 1.4 0.2 Iris-setosa 4.7 3.2 1.3 0.2 Iris-setosa 4.6 3.1 1.5 0.2 Iris-setosa 5 3.6 1.4 0.2 Iris-setosa 5.4 3.9 1.7 0.4 Iris-setosa 4.6 3.4 1.4 0.3 Iris-setosa 5 3.4 1.5 0.2 Iris-setosa 4.4 2.9 1.4 0.2 Iris-setosa 4.9 3.1 1.5 0.1 Iris-setosa 5.4 3.7 1.5 0.2 Iris-setosa 4.8 3.4 1.6 0.2 Iris-setosa 4.8 3 1.4 0.1 Iris-setosa 4.3 3 1.1 0.1 Iris-setosa 5.8 4 1.2 0.2 Iris-setosa 5.7 4.4 1.5 0.4 Iris-setosa 5.4 3.9 1.3 0.4 Iris-setosa 5.1 3.5 1.4 0.3 Iris-setosa 5.7 3.8 1.7 0.3 Iris-setosa 5.1 3.8 1.5 0.3 Iris-setosa 5.4 3.4 1.7 0.2 Iris-setosa 5.1 3.7 1.5 0.4 Iris-setosa 4.6 3.6 1 0.2 Iris-setosa 5.1 3.3 1.7 0.5 Iris-setosa 4.8 3.4 1.9 0.2 Iris-setosa 5 3 1.6 0.2 Iris-setosa 5 3.4 1.6 0.4 Iris-setosa 5.2 3.5 1.5 0.2 Iris-setosa 5.2 3.4 1.4 0.2 Iris-setosa 4.7 3.2 1.6 0.2 Iris-setosa 4.8 3.1 1.6 0.2 Iris-setosa 5.4 3.4 1.5 0.4 Iris-setosa 5.2 4.1 1.5 0.1 Iris-setosa 5.5 4.2 1.4 0.2 Iris-setosa 4.9 3.1 1.5 0.1 Iris-setosa 5 3.2 1.2 0.2 Iris-setosa 5.5 3.5 1.3 0.2 Iris-setosa 4.9 3.1 1.5 0.1 Iris-setosa 4.4 3 1.3 0.2 Iris-setosa 5.1 3.4 1.5 0.2 Iris-setosa 5 3.5 1.3 0.3 Iris-setosa 4.5 2.3 1.3 0.3 Iris-setosa 4.4 3.2 1.3 0.2 Iris-setosa 5 3.5 1.6 0.6 Iris-setosa 5.1 3.8 1.9 0.4 Iris-setosa 4.8 3 1.4 0.3 Iris-setosa 5.1 3.8 1.6 0.2 Iris-setosa 4.6 3.2 1.4 0.2 Iris-setosa 5.3 3.7 1.5 0.2 Iris-setosa 5 3.3 1.4 0.2 Iris-setosa 7 3.2 4.7 1.4 Iris-versicolor 6.4 3.2 4.5 1.5 Iris-versicolor 6.9 3.1 4.9 1.5 Iris-versicolor 5.5 2.3 4 1.3 Iris-versicolor 6.5 2.8 4.6 1.5 Iris-versicolor 5.7 2.8 4.5 1.3 Iris-versicolor 6.3 3.3 4.7 1.6 Iris-versicolor 4.9 2.4 3.3 1 Iris-versicolor 6.6 2.9 4.6 1.3 Iris-versicolor 5.2 2.7 3.9 1.4 Iris-versicolor 5 2 3.5 1 Iris-versicolor 5.9 3 4.2 1.5 Iris-versicolor 6 2.2 4 1 Iris-versicolor 6.1 2.9 4.7 1.4 Iris-versicolor 5.6 2.9 3.6 1.3 Iris-versicolor 6.7 3.1 4.4 1.4 Iris-versicolor 5.6 3 4.5 1.5 Iris-versicolor 5.8 2.7 4.1 1 Iris-versicolor 6.2 2.2 4.5 1.5 Iris-versicolor 5.6 2.5 3.9 1.1 Iris-versicolor 5.9 3.2 4.8 1.8 Iris-versicolor 6.1 2.8 4 1.3 Iris-versicolor 6.3 2.5 4.9 1.5 Iris-versicolor 6.1 2.8 4.7 1.2 Iris-versicolor 6.4 2.9 4.3 1.3 Iris-versicolor 6.6 3 4.4 1.4 Iris-versicolor 6.8 2.8 4.8 1.4 Iris-versicolor 6.7 3 5 1.7 Iris-versicolor 6 2.9 4.5 1.5 Iris-versicolor 5.7 2.6 3.5 1 Iris-versicolor 5.5 2.4 3.8 1.1 Iris-versicolor 5.5 2.4 3.7 1 Iris-versicolor 5.8 2.7 3.9 1.2 Iris-versicolor 6 2.7 5.1 1.6 Iris-versicolor 5.4 3 4.5 1.5 Iris-versicolor 6 3.4 4.5 1.6 Iris-versicolor 6.7 3.1 4.7 1.5 Iris-versicolor 6.3 2.3 4.4 1.3 Iris-versicolor 5.6 3 4.1 1.3 Iris-versicolor 5.5 2.5 4 1.3 Iris-versicolor 5.5 2.6 4.4 1.2 Iris-versicolor 6.1 3 4.6 1.4 Iris-versicolor 5.8 2.6 4 1.2 Iris-versicolor 5 2.3 3.3 1 Iris-versicolor 5.6 2.7 4.2 1.3 Iris-versicolor 5.7 3 4.2 1.2 Iris-versicolor 5.7 2.9 4.2 1.3 Iris-versicolor 6.2 2.9 4.3 1.3 Iris-versicolor 5.1 2.5 3 1.1 Iris-versicolor 5.7 2.8 4.1 1.3 Iris-versicolor 6.3 3.3 6 2.5 Iris-virginica 5.8 2.7 5.1 1.9 Iris-virginica 7.1 3 5.9 2.1 Iris-virginica 6.3 2.9 5.6 1.8 Iris-virginica 6.5 3 5.8 2.2 Iris-virginica 7.6 3 6.6 2.1 Iris-virginica 4.9 2.5 4.5 1.7 Iris-virginica 7.3 2.9 6.3 1.8 Iris-virginica 6.7 2.5 5.8 1.8 Iris-virginica 7.2 3.6 6.1 2.5 Iris-virginica 6.5 3.2 5.1 2 Iris-virginica 6.4 2.7 5.3 1.9 Iris-virginica 6.8 3 5.5 2.1 Iris-virginica 5.7 2.5 5 2 Iris-virginica 5.8 2.8 5.1 2.4 Iris-virginica 6.4 3.2 5.3 2.3 Iris-virginica 6.5 3 5.5 1.8 Iris-virginica 7.7 3.8 6.7 2.2 Iris-virginica 7.7 2.6 6.9 2.3 Iris-virginica 6 2.2 5 1.5 Iris-virginica 6.9 3.2 5.7 2.3 Iris-virginica 5.6 2.8 4.9 2 Iris-virginica 7.7 2.8 6.7 2 Iris-virginica 6.3 2.7 4.9 1.8 Iris-virginica 6.7 3.3 5.7 2.1 Iris-virginica 7.2 3.2 6 1.8 Iris-virginica 6.2 2.8 4.8 1.8 Iris-virginica 6.1 3 4.9 1.8 Iris-virginica 6.4 2.8 5.6 2.1 Iris-virginica 7.2 3 5.8 1.6 Iris-virginica 7.4 2.8 6.1 1.9 Iris-virginica 7.9 3.8 6.4 2 Iris-virginica 6.4 2.8 5.6 2.2 Iris-virginica 6.3 2.8 5.1 1.5 Iris-virginica 6.1 2.6 5.6 1.4 Iris-virginica 7.7 3 6.1 2.3 Iris-virginica 6.3 3.4 5.6 2.4 Iris-virginica 6.4 3.1 5.5 1.8 Iris-virginica 6 3 4.8 1.8 Iris-virginica 6.9 3.1 5.4 2.1 Iris-virginica 6.7 3.1 5.6 2.4 Iris-virginica 6.9 3.1 5.1 2.3 Iris-virginica 5.8 2.7 5.1 1.9 Iris-virginica 6.8 3.2 5.9 2.3 Iris-virginica 6.7 3.3 5.7 2.5 Iris-virginica 6.7 3 5.2 2.3 Iris-virginica 6.3 2.5 5 1.9 Iris-virginica 6.5 3 5.2 2 Iris-virginica 6.2 3.4 5.4 2.3 Iris-virginica 5.9 3 5.1 1.8 Iris-virginica youplot-0.4.6/logo.svg0000664000175000017500000005105314762626417015154 0ustar terceiroterceiro youplot-0.4.6/lib/0000775000175000017500000000000014762626417014235 5ustar terceiroterceiroyouplot-0.4.6/lib/youplot/0000775000175000017500000000000014762626417015750 5ustar terceiroterceiroyouplot-0.4.6/lib/youplot/version.rb0000664000175000017500000000010614762626417017757 0ustar terceiroterceiro# frozen_string_literal: true module YouPlot VERSION = '0.4.6' end youplot-0.4.6/lib/youplot/parser.rb0000664000175000017500000003162114762626417017574 0ustar terceiroterceiro# frozen_string_literal: true require 'optparse' require_relative 'options' module YouPlot # Class for parsing command line options class Parser class Error < StandardError; end attr_reader :command, :options, :params, :main_parser, :sub_parser, :config_file, :config def initialize @command = nil @options = Options.new( "\t", # elimiter: false, # transpose: nil, # headers: false, # pass: $stderr, # output: 'xyy', # fmt: false, # progressive: nil, # encoding: false, # color_names: false # debug: ) @params = Parameters.new end def apply_config_file return if !config_file && find_config_file.nil? read_config_file configure end def config_file_candidate_paths # keep the order of the paths paths = [] paths << ENV['MYYOUPLOTRC'] if ENV['MYYOUPLOTRC'] paths << '.youplot.yml' paths << '.youplotrc' if ENV['HOME'] paths << File.join(ENV['HOME'], '.youplotrc') paths << File.join(ENV['HOME'], '.youplot.yml') paths << File.join(ENV['HOME'], '.config', 'youplot', 'youplotrc') paths << File.join(ENV['HOME'], '.config', 'youplot', 'youplot.yml') end paths end def find_config_file config_file_candidate_paths.each do |file| path = File.expand_path(file) next unless File.exist?(path) @config_file = path ENV['MYYOUPLOTRC'] = path return @config_file end nil end def read_config_file require 'yaml' @config = YAML.load_file(config_file) end def configure option_members = @options.members param_members = @params.members # It would be more useful to be able to configure by plot type config.each do |k, v| k = k.to_sym if option_members.include?(k) @options[k] ||= v elsif param_members.include?(k) @params[k] ||= v else raise Error, "Unknown option/param in config file: #{k}" end end end def create_base_parser OptionParser.new do |parser| parser.program_name = 'YouPlot' parser.version = YouPlot::VERSION parser.summary_width = 23 parser.on_tail('') # Add a blank line at the end parser.separator('') parser.on('Common options:') parser.on('-O', '--pass [FILE]', 'file to output input data to [stdout]', 'for inserting YouPlot in the middle of Unix pipes') do |v| options[:pass] = v || $stdout end parser.on('-o', '--output [FILE]', 'file to output plots to [stdout]', 'If no option is specified, plot will print to stderr') do |v| options[:output] = v || $stdout end parser.on('-d', '--delimiter DELIM', String, 'use DELIM instead of [TAB] for field delimiter') do |v| options[:delimiter] = v end parser.on('-H', '--headers', TrueClass, 'specify that the input has header row') do |v| options[:headers] = v end parser.on('-T', '--transpose', TrueClass, 'transpose the axes of the input data') do |v| options[:transpose] = v end parser.on('-t', '--title STR', String, 'print string on the top of plot') do |v| params.title = v end parser.on('--xlabel STR', String, 'print string on the bottom of the plot') do |v| params.xlabel = v end parser.on('--ylabel STR', String, 'print string on the far left of the plot') do |v| params.ylabel = v end parser.on('-w', '--width INT', Numeric, 'number of characters per row') do |v| params.width = v end parser.on('-h', '--height INT', Numeric, 'number of rows') do |v| params.height = v end border_options = UnicodePlot::BORDER_MAP.keys.join(', ') parser.on('-b', '--border STR', String, 'specify the style of the bounding box', "(#{border_options})") do |v| params.border = v.to_sym end parser.on('-m', '--margin INT', Numeric, 'number of spaces to the left of the plot') do |v| params.margin = v end parser.on('--padding INT', Numeric, 'space of the left and right of the plot') do |v| params.padding = v end parser.on('-c', '--color VAL', String, 'color of the drawing') do |v| params.color = v =~ /\A[0-9]+\z/ ? v.to_i : v.to_sym end parser.on('--[no-]labels', TrueClass, 'hide the labels') do |v| params.labels = v end parser.on('-p', '--progress', TrueClass, 'progressive mode [experimental]') do |v| options[:progressive] = v end parser.on('-C', '--color-output', TrueClass, 'colorize even if writing to a pipe') do |_v| UnicodePlot::IOContext.define_method(:color?) { true } # FIXME end parser.on('-M', '--monochrome', TrueClass, 'no colouring even if writing to a tty') do |_v| UnicodePlot::IOContext.define_method(:color?) { false } # FIXME end parser.on('--encoding STR', String, 'specify the input encoding') do |v| options[:encoding] = v end # Optparse adds the help option, but it doesn't show up in usage. # This is why you need the code below. parser.on('--help', 'print sub-command help menu') do puts parser.help exit if YouPlot.run_as_executable? end parser.on('--config FILE', 'specify a config file') do |v| @config_file = v end parser.on('--debug', TrueClass, 'print preprocessed data') do |v| options[:debug] = v end # yield opt if block_given? end end def create_main_parser @main_parser = create_base_parser main_parser.banner = \ <<~MSG Program: YouPlot (Tools for plotting on the terminal) Version: #{YouPlot::VERSION} (using UnicodePlot #{UnicodePlot::VERSION}) Source: https://github.com/red-data-tools/YouPlot Usage: uplot [options] Commands: 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 General options: --config print config file info --help print command specific help menu --version print the version of YouPlot MSG # Help for the main parser is simple. # Simply show the banner above. main_parser.on('--help', 'print sub-command help menu') do show_main_help end main_parser.on('--config', 'show config file info') do show_config_info end end def show_main_help(out = $stdout) out.puts main_parser.banner out.puts exit if YouPlot.run_as_executable? end def show_config_info if ENV['MYYOUPLOTRC'] puts "config file : #{ENV['MYYOUPLOTRC']}" puts config.inspect else puts <<~EOS Configuration file not found. It should be a YAML file, like this example: width : 40 height : 20 By default, YouPlot will look for the configuration file in these locations: #{config_file_candidate_paths.map { |s| ' ' + s }.join("\n")} If you have the file elsewhere, you can specify its location with the `MYYOUPLOTRC` environment variable. EOS end exit if YouPlot.run_as_executable? end def sub_parser_add_symbol sub_parser.on_head('--symbol STR', String, 'character to be used to plot the bars') do |v| params.symbol = v end end def sub_parser_add_xscale xscale_options = UnicodePlot::ValueTransformer::PREDEFINED_TRANSFORM_FUNCTIONS.keys.join(', ') sub_parser.on_head('--xscale STR', String, "axis scaling (#{xscale_options})") do |v| params.xscale = v.to_sym end end def sub_parser_add_canvas canvas_types = UnicodePlot::Canvas::CANVAS_CLASS_MAP.keys.join(', ') sub_parser.on_head('--canvas STR', String, 'type of canvas', "(#{canvas_types})") do |v| params.canvas = v.to_sym end end def sub_parser_add_xlim sub_parser.on_head('--xlim FLOAT,FLOAT', Array, 'plotting range for the x coordinate') do |v| params.xlim = v.map(&:to_f) end end def sub_parser_add_ylim sub_parser.on_head('--ylim FLOAT,FLOAT', Array, 'plotting range for the y coordinate') do |v| params.ylim = v.map(&:to_f) end end def sub_parser_add_grid sub_parser.on_head('--[no-]grid', TrueClass, 'draws grid-lines at the origin') do |v| params.grid = v end end def sub_parser_add_fmt_xyxy sub_parser.on_head('--fmt STR', String, 'xyxy : header is like x1, y1, x2, y2, x3, y3...', 'xyy : header is like x, y1, y2, y2, y3...') do |v| options[:fmt] = v end end def sub_parser_add_fmt_yx sub_parser.on_head('--fmt STR', String, 'xy : header is like x, y...', 'yx : header is like y, x...') do |v| options[:fmt] = v end end def create_sub_parser @sub_parser = create_base_parser sub_parser.banner = \ <<~MSG Usage: YouPlot #{command} [options] Options for #{command}: MSG case command # If you type only `uplot` in the terminal. # Output help to standard error output. when nil show_main_help($stderr) # Output help to standard output. when :help show_main_help when :barplot, :bar sub_parser_add_symbol sub_parser_add_fmt_yx sub_parser_add_xscale when :count, :c sub_parser.on_head('-r', '--reverse', TrueClass, 'reverse the result of comparisons') do |v| options.reverse = v end sub_parser_add_symbol sub_parser_add_xscale when :histogram, :hist sub_parser_add_symbol sub_parser.on_head('--closed STR', String, 'side of the intervals to be closed [left]') do |v| params.closed = v end sub_parser.on_head('-n', '--nbins INT', Numeric, 'approximate number of bins') do |v| params.nbins = v end when :lineplot, :line, :l sub_parser_add_canvas sub_parser_add_grid sub_parser_add_fmt_yx sub_parser_add_ylim sub_parser_add_xlim when :lineplots, :lines, :ls sub_parser_add_canvas sub_parser_add_grid sub_parser_add_fmt_xyxy sub_parser_add_ylim sub_parser_add_xlim when :scatter, :s sub_parser_add_canvas sub_parser_add_grid sub_parser_add_fmt_xyxy sub_parser_add_ylim sub_parser_add_xlim when :density, :d sub_parser_add_canvas sub_parser_add_grid sub_parser_add_fmt_xyxy sub_parser_add_ylim sub_parser_add_xlim when :boxplot, :box sub_parser_add_xlim when :colors, :color, :colours, :colour sub_parser.on_head('-n', '--names', TrueClass, 'show color names only') do |v| options[:color_names] = v end # Currently it simply displays the configuration file, # but in the future this may be changed to open a text editor like Vim # to edit the configuration file. when :config show_config_info else error_message = "YouPlot: unrecognized command '#{command}'" raise Error, error_message unless YouPlot.run_as_executable? warn error_message exit 1 end end def parse_options(argv = ARGV) begin create_main_parser.order!(argv) rescue OptionParser::ParseError => e warn "YouPlot: #{e.message}" exit 1 if YouPlot.run_as_executable? end @command = argv.shift&.to_sym begin create_sub_parser&.parse!(argv) rescue OptionParser::ParseError => e warn "YouPlot: #{e.message}" exit 1 if YouPlot.run_as_executable? end begin apply_config_file rescue StandardError => e warn "YouPlot: #{e.message}" exit 1 if YouPlot.run_as_executable? end end end end youplot-0.4.6/lib/youplot/parameters.rb0000664000175000017500000000103214762626417020434 0ustar terceiroterceiro# frozen_string_literal: true module YouPlot # UnicodePlot parameters. # Why Struct, not Hash? # * The keys are static in Struct. # * Struct does not conflict with keyword arguments. Hash dose. Parameters = Struct.new( # Sort me! :title, :width, :height, :border, :margin, :padding, :color, :xlabel, :ylabel, :labels, :symbol, :xscale, :nbins, :closed, :canvas, :xlim, :ylim, :grid, :name ) do def to_hc to_h.compact end end end youplot-0.4.6/lib/youplot/options.rb0000664000175000017500000000046614762626417017776 0ustar terceiroterceiro# frozen_string_literal: true module YouPlot # Command line options that are not Plot parameters Options = Struct.new( :delimiter, :transpose, :headers, :pass, :output, :fmt, :progressive, :encoding, :reverse, # count :color_names, # color :debug ) end youplot-0.4.6/lib/youplot/dsv.rb0000664000175000017500000000433114762626417017072 0ustar terceiroterceiro# frozen_string_literal: true require 'csv' module YouPlot # Module to handle DSV (Delimiter-separated values) format. # Extract header and series. module DSV module_function def parse(input, delimiter, headers, transpose) # Parse as CSV arr = CSV.parse(input, col_sep: delimiter) # Remove blank lines arr.delete_if do |i| i == [] or i.all?(&:nil?) end # get header headers = get_headers(arr, headers, transpose) # get series series = get_series(arr, headers, transpose) # Return if No header return Data.new(headers, series) if headers.nil? # Warn if header contains nil warn "\e[35mHeaders contains nil in it.\e[0m" if headers.include?(nil) # Warn if header contains '' warn "\e[35mHeaders contains \"\" in it.\e[0m" if headers.include? '' # Make sure the number of elements in the header matches the number of series. h_size = headers.size s_size = series.size if h_size > s_size warn "\e[35mThe number of headers is greater than the number of series.\e[0m" exit 1 if YouPlot.run_as_executable? elsif h_size < s_size warn "\e[35mThe number of headers is less than the number of series.\e[0m" exit 1 if YouPlot.run_as_executable? end Data.new(headers, series) if h_size == s_size end # Transpose different sized ruby arrays # https://stackoverflow.com/q/26016632 def transpose2(arr) Array.new(arr.map(&:length).max) { |i| arr.map { |e| e[i] } } end def get_headers(arr, headers, transpose) # header(-) return nil unless headers # header(+) trenspose(+) return arr.map(&:first) if transpose # header(+) transpose(-) arr[0] end def get_series(arr, headers, transpose) # header(-) unless headers return arr if transpose return transpose2(arr) end # header(+) but no element in the series. # TODO: should raise error? return Array.new(arr[0].size, []) if arr.size == 1 # header(+) transpose(+) return arr.map { |row| row[1..-1] } if transpose # header(+) transpose(-) transpose2(arr[1..-1]) end end end youplot-0.4.6/lib/youplot/command.rb0000664000175000017500000001302514762626417017714 0ustar terceiroterceiro# frozen_string_literal: true require_relative 'dsv' require_relative 'parser' # FIXME require_relative 'backends/unicode_plot' module YouPlot Data = Struct.new(:headers, :series) class Command attr_accessor :command, :params, :options attr_reader :data, :parser def initialize(argv = ARGV) @argv = argv @parser = Parser.new @command = nil @params = nil @options = nil @backend = YouPlot::Backends::UnicodePlot end def run_as_executable YouPlot.run_as_executable = true run end def run parser.parse_options(@argv) @command ||= parser.command @options ||= parser.options @params ||= parser.params # color command if %i[colors color colours colour].include? @command plot = create_plot output_plot(plot) return end # progressive mode if options[:progressive] stop = false Signal.trap(:INT) { stop = true } # make cursor invisible options[:output].print "\e[?25l" # mainloop while (input = Kernel.gets) n = main_progressive(input) break if stop options[:output].print "\e[#{n}F" end options[:output].print "\e[0J" # make cursor visible options[:output].print "\e[?25h" # normal mode else # Sometimes the input file does not end with a newline code. begin begin input = Kernel.gets(nil) rescue Errno::ENOENT => e warn e.message next end main(input) end until input end end private def main(input) # Outputs input data to a file or stdout. output_data(input) @data = parse_dsv(input) # Debug mode, show parsed results pp @data if options[:debug] # When run as a program instead of a library if YouPlot.run_as_executable? begin plot = create_plot rescue ArgumentError => e # Show only one line of error. warn e.backtrace[0] # Show error message in purple warn "\e[35m#{e}\e[0m" # Explicitly terminated with exit code: 1 exit 1 end # When running YouPlot as a library (e.g. for testing) else plot = create_plot end output_plot(plot) end def main_progressive(input) output_data(input) # FIXME # Worked around the problem of not being able to draw # plots when there is only one header line. if @raw_data.nil? @raw_data = String.new if options[:headers] @raw_data << input return end end @raw_data << input # FIXME @data = parse_dsv(@raw_data) plot = create_plot output_plot_progressive(plot) end def parse_dsv(input) # If encoding is specified, convert to UTF-8 if options[:encoding] input.force_encoding(options[:encoding]) .encode!('utf-8') end begin data = DSV.parse(input, options[:delimiter], options[:headers], options[:transpose]) rescue CSV::MalformedCSVError => e warn 'Failed to parse the text. ' warn 'Please try to set the correct character encoding with --encoding option.' warn e.backtrace.grep(/youplot/).first exit 1 rescue ArgumentError => e warn 'Failed to parse the text. ' warn e.backtrace.grep(/youplot/).first exit 1 end data end def create_plot case command when :bar, :barplot @backend.barplot(data, params, options[:fmt]) when :count, :c @backend.barplot(data, params, count: true, reverse: options[:reverse]) when :hist, :histogram @backend.histogram(data, params) when :line, :lineplot, :l @backend.line(data, params, options[:fmt]) when :lines, :lineplots, :ls @backend.lines(data, params, options[:fmt]) when :scatter, :s @backend.scatter(data, params, options[:fmt]) when :density, :d @backend.density(data, params, options[:fmt]) when :box, :boxplot @backend.boxplot(data, params) when :colors, :color, :colours, :colour @backend.colors(options[:color_names]) else raise "unrecognized plot_type: #{command}" end end def output_data(input) # Pass the input to subsequent pipelines case options[:pass] when IO, StringIO options[:pass].print(input) else if options[:pass] File.open(options[:pass], 'w') do |f| f.print(input) end end end end def output_plot(plot) case options[:output] when IO, StringIO plot.render(options[:output]) when String, Tempfile File.open(options[:output], 'w') do |f| plot.render(f) end end end def output_plot_progressive(plot) case options[:output] when IO, StringIO # RefactorMe out = StringIO.new(String.new) def out.tty? true end plot.render(out) lines = out.string.lines lines.each do |line| options[:output].print line.chomp options[:output].print "\e[0K" options[:output].puts end options[:output].print "\e[0J" options[:output].flush out.string.lines.size else raise 'In progressive mode, output to a file is not possible.' end end end end youplot-0.4.6/lib/youplot/backends/0000775000175000017500000000000014762626417017522 5ustar terceiroterceiroyouplot-0.4.6/lib/youplot/backends/unicode_plot.rb0000664000175000017500000001606214762626417022540 0ustar terceiroterceiro# frozen_string_literal: true # UnicodePlot - Plot your data by Unicode characters # https://github.com/red-data-tools/unicode_plot.rb require_relative 'processing' require 'unicode_plot' # If the line color is specified as a number, the program will display an error # message to the user and exit. Remove this patch when UnicodePlot is improved. module UnicodePlot class << self alias lineplot_original lineplot def lineplot(*args, **kw) if kw[:color].is_a? Numeric warn <<~EOS YouPlot: Line colors cannot be specified by numerical values. For more information, please see the following issue. https://github.com/red-data-tools/unicode_plot.rb/issues/34 EOS YouPlot.run_as_executable ? exit(1) : raise(Error) end lineplot_original(*args, **kw) end end end module YouPlot # plotting functions. module Backends module UnicodePlot class Error < StandardError; end module_function def barplot(data, params, fmt = nil, count: false, reverse: false) headers = data.headers series = data.series # `uplot count` if count series = Processing.count_values(series[0], reverse: reverse) params.title = headers[0] if headers end if series.size == 1 # If there is only one series.use the line number for label. params.title ||= headers[0] if headers labels = Array.new(series[0].size) { |i| (i + 1).to_s } values = series[0].map(&:to_f) else # If there are 2 or more series... if fmt == 'yx' # assume that the first 2 series are the y and x series respectively. x_col = 1 y_col = 0 else # assume that the first 2 series are the x and y series respectively. x_col = 0 y_col = 1 end params.title ||= headers[y_col] if headers labels = series[x_col] values = series[y_col].map(&:to_f) end ::UnicodePlot.barplot(labels, values, **params.to_hc) end def histogram(data, params) headers = data.headers series = data.series params.title ||= data.headers[0] if headers values = series[0].map(&:to_f) ::UnicodePlot.histogram(values, **params.to_hc) end def line(data, params, fmt = nil) headers = data.headers series = data.series if series.size == 1 # If there is only one series, it is assumed to be sequential data. params.ylabel ||= headers[0] if headers y = series[0].map(&:to_f) ::UnicodePlot.lineplot(y, **params.to_hc) else # If there are 2 or more series... if fmt == 'yx' # assume that the first 2 series are the y and x series respectively. x_col = 1 y_col = 0 else # assume that the first 2 series are the x and y series respectively. x_col = 0 y_col = 1 end if headers params.xlabel ||= headers[x_col] params.ylabel ||= headers[y_col] end x = series[x_col].map(&:to_f) y = series[y_col].map(&:to_f) ::UnicodePlot.lineplot(x, y, **params.to_hc) end end def get_method2(method1) "#{method1}!".to_sym end def plot_xyy(data, method1, params) headers = data.headers series = data.series method2 = get_method2(method1) series.map! { |s| s.map(&:to_f) } if headers params.name ||= headers[1] params.xlabel ||= headers[0] end params.xlim ||= series[0].flatten.minmax # why need? params.ylim ||= series[1..-1].flatten.minmax # why need? plot = ::UnicodePlot.public_send(method1, series[0], series[1], **params.to_hc) 2.upto(series.size - 1) do |i| ::UnicodePlot.public_send(method2, plot, series[0], series[i], name: headers&.[](i)) end plot end def plot_xyxy(data, method1, params) headers = data.headers series2 = data.series .map { |s| s.map(&:to_f) } .each_slice(2).to_a method2 = get_method2(method1) params.name ||= headers[0] if headers params.xlim ||= series2.map(&:first).flatten.minmax # why need? params.ylim ||= series2.map(&:last).flatten.minmax # why need? x1, y1 = series2.shift plot = ::UnicodePlot.public_send(method1, x1, y1, **params.to_hc) series2.each_with_index do |(xi, yi), i| ::UnicodePlot.public_send(method2, plot, xi, yi, name: headers&.[]((i + 1) * 2)) end plot end def plot_fmt(data, fmt, method1, params) case fmt when 'xyy' plot_xyy(data, method1, params) when 'xyxy' plot_xyxy(data, method1, params) when 'yx' raise "Incorrect format: #{fmt}" else raise "Unknown format: #{fmt}" end end def lines(data, params, fmt = 'xyy') check_series_size(data, fmt) plot_fmt(data, fmt, :lineplot, params) end def scatter(data, params, fmt = 'xyy') check_series_size(data, fmt) plot_fmt(data, fmt, :scatterplot, params) end def density(data, params, fmt = 'xyy') check_series_size(data, fmt) plot_fmt(data, fmt, :densityplot, params) end def boxplot(data, params) headers = data.headers series = data.series headers ||= (1..series.size).map(&:to_s) series.map! { |s| s.map(&:to_f) } ::UnicodePlot.boxplot(headers, series, **params.to_hc) end def colors(color_names = false) # FIXME s = String.new ::UnicodePlot::StyledPrinter::TEXT_COLORS.each do |k, v| s << v s << k.to_s unless color_names s << "\t" s << ' ●' end s << "\033[0m" s << "\t" end s << "\n" def s.render(obj) obj.print(self) end s end def check_series_size(data, fmt) series = data.series if series.size == 1 warn <<~EOS YouPlot: There is only one series of input data. Please check the delimiter. Headers: \e[35m#{data.headers.inspect}\e[0m The first item is: \e[35m\"#{series[0][0]}\"\e[0m The last item is : \e[35m\"#{series[0][-1]}\"\e[0m EOS # NOTE: Error messages cannot be colored. YouPlot.run_as_executable ? exit(1) : raise(Error) end if fmt == 'xyxy' && series.size.odd? warn <<~EOS YouPlot: In the xyxy format, the number of series must be even. Number of series: \e[35m#{series.size}\e[0m Headers: \e[35m#{data.headers.inspect}\e[0m EOS # NOTE: Error messages cannot be colored. YouPlot.run_as_executable ? exit(1) : raise(Error) end end end end end youplot-0.4.6/lib/youplot/backends/processing.rb0000664000175000017500000000147414762626417022231 0ustar terceiroterceiro# frozen_string_literal: true module YouPlot # plotting functions. module Backends module Processing module_function def count_values(arr, tally: true, reverse: false) # tally was added in Ruby 2.7 result = \ if tally && Enumerable.method_defined?(:tally) arr.tally else # value_counts Enumerable::Statistics arr.value_counts(dropna: false) end # sorting result = result.sort do |a, b| # compare values r = b[1] <=> a[1] # If the values are the same, compare by name r = a[0] <=> b[0] if r.zero? r end # --reverse option result.reverse! if reverse # prepare for barplot result.transpose end end end end youplot-0.4.6/lib/youplot.rb0000664000175000017500000000125114762626417016274 0ustar terceiroterceiro# frozen_string_literal: true require_relative 'youplot/version' require_relative 'youplot/dsv' require_relative 'youplot/parameters' require_relative 'youplot/command' module YouPlot # @run_as_executable = true / false # YouPlot behaves slightly differently when run as a command line tool # and when run as a script (e.g. for testing). In the event of an error, # when run as a command line tool, YouPlot will display a short error message # and exit abnormally. When run as a script, it will just raise an error. @run_as_executable = false class << self attr_accessor :run_as_executable def run_as_executable? @run_as_executable end end end youplot-0.4.6/exe/0000775000175000017500000000000014762626417014250 5ustar terceiroterceiroyouplot-0.4.6/exe/youplot0000775000175000017500000000015514762626417015712 0ustar terceiroterceiro#!/usr/bin/env ruby # frozen_string_literal: true require 'youplot' YouPlot::Command.new.run_as_executable youplot-0.4.6/exe/uplot0000775000175000017500000000015514762626417015342 0ustar terceiroterceiro#!/usr/bin/env ruby # frozen_string_literal: true require 'youplot' YouPlot::Command.new.run_as_executable youplot-0.4.6/Rakefile0000664000175000017500000000034214762626417015133 0ustar terceiroterceiro# frozen_string_literal: true require 'bundler/gem_tasks' require 'rake/testtask' Rake::TestTask.new(:test) do |t| t.libs << 'test' t.libs << 'lib' t.test_files = FileList['test/**/*_test.rb'] end task default: :test youplot-0.4.6/README.md0000664000175000017500000002433614762626417014756 0ustar terceiroterceiro

Build Status Gem Version DOI Docs Stable The MIT License YouPlot is a command line tool that draws plots on the terminal. :bar_chart: Powered by [UnicodePlot](https://github.com/red-data-tools/unicode_plot.rb)
## Installation ``` brew install youplot ``` ``` gem install youplot ``` ``` nix shell nixpkgs#youplot ``` ``` guix install youplot ``` ``` conda install -c conda-forge ruby conda install -c conda-forge compilers gem install youplot ``` ## Quick Start barplot histogram scatter density boxplot `uplot [options] ` ### barplot ```sh curl -sL https://git.io/ISLANDScsv \ | sort -nk2 -t, \ | tail -n15 \ | uplot bar -d, -t "Areas of the World's Major Landmasses" ```

barplot

```sh # For offline user: Sorts files in a directory by size and shows a bar graph. ls -l | awk '{print $9, $5}' | sort -nk 2 | uplot bar -d ' ' ``` ### histogram ```sh echo -e "from numpy import random;" \ "n = random.randn(10000);" \ "print('\\\n'.join(str(i) for i in n))" \ | python3 \ | uplot hist --nbins 20 ```

histogram

### lineplot ```sh 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

```sh # For offline users: Calculates sin values (0-2*pi) and plots a sine wave. python3 -c ' from math import sin, pi data = "\n".join(f"{i*pi/50}\t{sin(i*pi/50)}" for i in range(101)) print(data)' | uplot line ``` ### scatter ```sh curl -sL https://git.io/IRIStsv \ | cut -f1-4 \ | uplot scatter -H -t IRIS ```

scatter

```sh # For offline users cat test/fixtures/iris.csv | cut -f1-4 -d, | uplot scatter -H -d, -t IRIS ``` ### density ```sh curl -sL https://git.io/IRIStsv \ | cut -f1-4 \ | uplot density -H -t IRIS ```

density

```sh # For offline users cat test/fixtures/iris.csv | cut -f1-4 -d, | uplot density -H -d, -t IRIS ``` ### boxplot ```sh curl -sL https://git.io/IRIStsv \ | cut -f1-4 \ | uplot boxplot -H -t IRIS ```

boxplot

```sh # For offline users cat test/fixtures/iris.csv | cut -f1-4 -d, | uplot boxplot -H -d, -t IRIS ``` ### count Count processes by user ID. ```sh ps aux | awk '{print $1}' | uplot count ``` Count the number of chromosomes where genes are located. ```sh 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

* [GENCODE - Human Release](https://www.gencodegenes.org/human/) 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. ```sh 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 [options]` | Take input from stdin | | `uplot [options] data.tsv ...` | Take input from files | | `pipeline1 \| uplot -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 output, 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 --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. ### YouPlot Configuration (youplotrc) You can specify default options in a configuration file in YAML format. For more information, enter the following command. ``` uplot --config ``` ## Tools that are useful to use with YouPlot * [csvtk](https://github.com/shenwei356/csvtk) * [GNU datamash](https://www.gnu.org/software/datamash/) * [awk](https://www.gnu.org/software/gawk/) * [xsv](https://github.com/BurntSushi/xsv) ## 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](https://github.com/red-data-tools/YouPlot/issues) * Fix bugs and [submit pull requests](https://github.com/red-data-tools/YouPlot/pulls) * Write, clarify, or fix documentation * English corrections by native speakers are welcome. * Suggest or add new features * Make a donation ### Development ```sh # 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 * [sampo grafiikka](https://jypg.net/sampo_grafiikka) - Project logo creation * [yutaas](https://github.com/yutaas) - English proofreading ## License [MIT License](https://opensource.org/licenses/MIT). youplot-0.4.6/LICENSE.txt0000664000175000017500000000206114762626417015311 0ustar terceiroterceiroThe MIT License (MIT) Copyright (c) 2020 kojix2 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. youplot-0.4.6/Gemfile0000664000175000017500000000030014762626417014753 0ustar terceiroterceiro# frozen_string_literal: true source 'https://rubygems.org' # Specify your gem's dependencies in youplot.gemspec gemspec group :test do gem 'rake' gem 'simplecov' gem 'test-unit' end youplot-0.4.6/.gitignore0000664000175000017500000000013114762626417015452 0ustar terceiroterceiro/.bundle/ /.yardoc /_yardoc/ /coverage/ /doc/ /pkg/ /spec/reports/ /tmp/ /vendor/ *.lock youplot-0.4.6/.github/0000775000175000017500000000000014762626417015027 5ustar terceiroterceiroyouplot-0.4.6/.github/workflows/0000775000175000017500000000000014762626417017064 5ustar terceiroterceiroyouplot-0.4.6/.github/workflows/doc.yml0000664000175000017500000000074314762626417020360 0ustar terceiroterceironame: doc on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ruby - name: Generate document run: gem install -N yard && yard doc - name: Publish Documentation on GitHub Pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./doc youplot-0.4.6/.github/workflows/ci.yml0000664000175000017500000000071714762626417020207 0ustar terceiroterceironame: test on: [push, pull_request] jobs: build: name: ${{ matrix.os }} Ruby ${{ matrix.ruby }} runs-on: ${{ matrix.os }}-latest strategy: matrix: os: ["ubuntu", "macos"] ruby: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3", "3.4"] steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - run: bundle exec rake test youplot-0.4.6/.github/FUNDING.yml0000664000175000017500000000001614762626417016641 0ustar terceiroterceiroko_fi: kojix2