帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:PLOT  BASE  Unicode  终端  plotting  TERM  
Unicode plotting for the REPL in Julia

  • 源代码名称:UnicodePlots.jl
  • 源代码网址:http://www.github.com/Evizero/UnicodePlots.jl
  • UnicodePlots.jl源代码文档
  • UnicodePlots.jl源代码下载
  • Git URL:
    git://www.github.com/Evizero/UnicodePlots.jl.git
  • Git Clone代码到本地:
    git clone http://www.github.com/Evizero/UnicodePlots.jl
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/Evizero/UnicodePlots.jl
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • UnicodePlots

    Project Status: Active - The project has reached a stable, usable state and is being actively developed.License

    高级Unicode绘图库设计用于替代 julia 。

    安装

    Package Evaluator v3Package Evaluator v4Package Evaluator v5Package Evaluator v6

    要安装 UnicodePlots,启动Julia并将下面的代码剪切到 REPL 。 它使用本机Julia包管理器。

    Pkg.add("UnicodePlots")using UnicodePlots

    对于最新的开发人员版本:

    Build StatusCoverage Status

    Pkg.checkout("UnicodePlots")

    高级接口

    有两种方法可以生成典型的图,但没有太多的详细。 下面列出了常见方案的主要高级功能:

    • 散点图
    • Lineplot
    • Barplot ( 水平)
    • 楼梯 plot
    • 直方图( 水平)
    • 稀疏 Pattern
    • 密度 plot

    下面是一个典型用例的快速 Hello World 示例:

    myPlot =lineplot([-1, 2, 3, 7], [1, 2, 9, 4], title ="My Plot", name ="my line")

    Basic Canvas

    还有其他类型的Canvas 可用( 请参见"低级别接口") 。 在某些情况下,如打印到文件,使用 AsciiCanvasDotCanvas 或者 BlockCanvas 可能会导致更好的结果。

    lineplot([-1, 2, 3, 7], [1, 2, 9, 4], title ="My Plot", name ="my line", canvas = AsciiCanvas, border =:ascii)

    Basic Canvas

    每个 plot 都有一个变异变体,以感叹号结尾。

    lineplot!(myPlot, [0, 4, 8], [10, 1, 10], color =:yellow, name ="other line")

    Basic Canvas

    散点图
    scatterplot(randn(50), randn(50), title ="My Scatterplot", color =:red)

    Scatterplot Screenshot

    Lineplot
    lineplot([1, 2, 7], [9, -6, 8], title ="My Lineplot", color =:blue)

    Lineplot Screenshot1

    还可以指定函数和范围。

    myPlot =lineplot([cos, sin], -π/2, 2π)

    Lineplot Screenshot2

    你还可以通过指定截距和坡度来 plot 线

    lineplot!(myPlot, -0.5, .2)

    Lineplot Screenshot3

    Barplot

    接受两个向量或者字典

    barplot(["Paris", "New York", "Moskau", "Madrid"],
     [2.244, 8.406, 11.92, 3.165],
     title ="Population")

    Barplot Screenshot

    注意:可以使用关键字参数 symb 指定应用于 plot的字符的字符。 例如 symb ="#"

    楼梯 plot
    # supported style are :pre and :poststairs([1, 2, 4, 7, 8], [1, 3, 4, 2, 7], color =:red, style =:post, title ="My Staircase Plot")

    Staircase Screenshot

    直方图
    histogram(randn(1000), bins =15, title ="Histogram")

    Histogram Screenshot

    稀疏 Pattern
    spy(sprandn(50, 120, .05))

    Spy Screenshot

    密度 plot
    myPlot =densityplot(randn(1000), randn(1000), color =:blue)densityplot!(myPlot, randn(1000) +2, randn(1000) +2, color =:red)

    Density Screenshot

    命令行选项

    所有打印都支持一组通用的命名参数

    • title::String ="":

      要显示在 plot 顶部的文本。

    • name::String ="":

      向右显示当前图形的批注

    • width::Int = 40:

      每行打印的字符数。

      lineplot(sin, 1:.5:20, width =80)

      Width Screenshot

    • height::Int = 20:

      打印时应使用的行数。 不适用于 barplot

      lineplot(sin, 1:.5:20, height =18)

      Height Screenshot

    • xlim::Vector = [0, 1] :

      x 坐标的绘图范围

    • ylim::Vector = [0, 1] :

      y 坐标的绘图范围

    • margin::Int = 3:

      整个 plot 左边的空字符数。

    • border::Symbol = :solid:

      plot的边界框的样式。 支持 :solid:bold:dashed:dotted:ascii:none

      lineplot([-1.,2, 3, 7], [1.,2, 9, 4], border=:bold)lineplot([-1.,2, 3, 7], [1.,2, 9, 4], border=:dashed)lineplot([-1.,2, 3, 7], [1.,2, 9, 4], border=:dotted)lineplot([-1.,2, 3, 7], [1.,2, 9, 4], border=:none)

      Border Screenshot

    • padding::Int = 1:

      标签和画布之间 plot 左边和右边的空间。

    • labels::Bool = true:

      可以通过设置 labels=false 来隐藏标签。

      lineplot(sin, 1:.5:20, labels=false)

      Labels Screenshot

    • grid::Bool = true:

      可以用于隐藏原点处的网格线

    • color::Symbol = :blue:

      图形的颜色可以是任何 :blue:red:yellow

    • canvas::Type = BrailleCanvas:

      图形的类型,应用于绘制( 请参见"低级别接口"

    • symb::AbstractString ="▪":

      仅 Barplot 。指定应用于渲染栏的字符

    注意:如果要将 plot 打印到文件中,但有字体的等距问题,应该尝试 border = :asciicanvas = AsciiCanvas ( 或者者 canvas = DotCanvas的scatterplots ) 。

    方法

    • title!(plot::Plot, title::String)

      • title 要在 plot 窗口的顶部中心写入的字符串。 如果标题为空,则不会绘制标题的整个行
    • xlabel!(plot::Plot, xlabel::String)

      • xlabel 显示在 plot 窗口底部的字符串。 如果标题为空,则不会绘制标签的整个行
    • ylabel!(plot::Plot, xlabel::String)

      • ylabel 显示在 plot 窗口最左边的字符串。

    方法 annotate 负责设置 plot的所有文本装饰。! 它有两个功能:

    • annotate!(plot::Plot, where::Symbol, value::String)

      • where 可以是以下任意一种: :tl:t:bl ( 左下方),:b,( 底部居中),( 左边),:r,( 右边)
    • annotate!(plot::Plot, where::Symbol, row::Int, value::String)

      • where 可以是以下任意一种: :l ( 左边),:r ( 右)

      • row 可以在 1和画布字符行的数目之间

    Annotate Screenshot

    低级别接口

    在窗帘后面做所有繁重工作的主要结构是 Canvas的亚型。 画布是用于光栅化绘图的图形对象。 基本上它使用Unicode字符来表示像素。

    下面是一个简单的示例:

    canvas =BrailleCanvas(40, 10, # number of columns and rows (characters) origin_x =0., origin_y =0., # position in virtual space width =1., height =1.) # size of the virtual spacelines!(canvas, 0., 0., 1., 1., :blue) # virtual spacepoints!(canvas, rand(50), rand(50), :red) # virtual spacelines!(canvas, 0., 1., .5, 0., :yellow) # virtual spacepixel!(canvas, 5, 8, :red) # pixel space

    Basic Canvas

    你可以分别使用 nrows(canvas)ncols(canvas) 访问画布( 在字符中)的高度和宽度。 你可以结合使用这些函数和 printrow 将画布嵌入任何你希望的地方。 例如 printrow(STDOUT, canvas, 3) 将画布的第三个字符行写入标准输出。

    如你所见,当多个像素表示多个像素时出现的一个问题就是它很难分配颜色。 是因为每个字符的"象素"都可以属于不同的颜色组( 每个字符只能有一个颜色) 。 这个包使用一种颜色混合来处理整个组。

    Blending Colors

    目前,实现了以下类型的画布:

    • BrailleCanvas: 这类画布可能是Unicode绘图分辨率最高的那个。 它本质上使用了盲文符号的Unicode字符作为像素。 这有效地将每个字符变成 8个像素,可以使用二进制操作单独操作。

    • BlockCanvas: 这个画布也是基于unicode的。 它的分辨率是BrailleCanvas的一半。 BrailleCanvas不同,像素在它们之间没有可见的间距。 这个画布有效地将每个字符变成 4像素,可以使用二进制操作单独操作。

    • 英镑 AsciiCanvas 和英镑 DotCanvas: 这两个画布仅使用标准的ASCII字符。 当然,它看起来不像基于unicode的那样好。 然而,在某些情况下,它可能会产生更好的结果。 将打印打印到文件中是下列情况之一。

    • DensityCanvas: 与BrailleCanvas不同,密度画布不只是将"象素"标记为。 相反,它增加每个字符的计数器,跟踪在该字符中绘制的像素的频率。 一个变量跟踪最大频率,画布可以以绘制数据的密度。

    • BarplotGraphics: 这个图形区域是特殊的,因为它不支持任何像素操作。 它本质上是没有装饰但数字的barplot 。 它只支持一个方法 addrow,它允许用户向图形对象中添加附加条!

    待办事项

    • 使用光标移动的动画绘图
    • 添加heatmaps和Hinton图
    • Boxplots以某种形式

    许可证

    这个代码可以在MIT许可条款下自由使用。

    确认

    TextPlots.jl 激发,这又由 Drawille激发。



    文章标签:BASE  TERM  终端  PLOT  Unicode  plotting  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语