基于Unicode的终端作业科学标绘

2020-06-06 18:51:05

有几种方法可以生成典型的情节,而不需要太多的冗长。以下是常见场景的主要高级函数列表:

使用UnicodePlotplt=linelot([-1,2,3,7],[-1,2,9,4],Title=";Example Plot";,Name=";my line";,xLabel=";x";,yLabel=";y";)。

还有其他类型的画布可用(请参阅第";低级界面一节)。在某些情况下,例如打印到文件,使用AsciiCanvas、DotCanvas或BlockCanvas可能会产生更好的结果。

LinePlot([-1,2,3,7],[-1,2,9,4],Title=";Example Plot";,Name=";my line";,xLabel=";x";,yLabel=";y";,Canvas=DotCanvas,Borde=:ASCII)。

#支持的样式有:Pre和:Post楼梯([1,2,4,7,8],[1,3,4,2,7],color=:red,style=:Post,title=";My Staircase Plot";)。

备注:您可以使用关键字参数symb指定绘制条形图时应使用的字符。例如symb=";#";

热图功能还支持使用参数xScale、yscale和轴偏移量缩放轴,在使用xOffset和yOffset缩放之后。

Colormap参数可用于指定命名或自定义色彩映射表。有关更多详细信息,请参阅热图函数文档。

此外,COLOR BAR和COLOR BAR_BORDER选项可用于启用/禁用COLOR BAR并配置其边框。zlabel选项和zlabel!方法可用于设置z轴(色条)标签。

打印的边框的样式。支持:实心、:粗体、:虚线、:虚线、:ASCII、:角点和:无。

LinePlot([-1.,2,3,7],[1.,2,9,4],BORDER=:粗体)LINEPORT([-1.,2,3,7],[1.,2,9,4],BORDER=:虚线)LINEPORT([-1.,2,3,7],[1.,2,9,4],BORDER=:虚线)LINEPORT([-1.,2,3,7],[1.,2,2,2,4],[1.,2,3,7],[1.,2,3,7],[1.,2,2,2,9,4],边框=:无)。

标签和画布之间打印的左右空间。

注意:如果要将绘图打印到文件中,但字体存在等宽问题,您可能应该尝试BORDER=:ASCII和Canvas=AsciiCanvas(或者对于散点图,尝试Canvas=DotCanvas)。

为要写入绘图窗口顶部中心的字符串添加标题。如果标题为空,则不会绘制整行标题。

交叉标记要显示在绘图窗口底部的字符串。如果标题为空,则不会绘制整个标注行。

方法注释!负责一个情节的所有文字装饰的设置。它有两个功能:

其中可以是::tl(左上角)、:t(中上角)、:tr(右上角)、:bl(左下角)、:b(中下角)、:br(右下角)、:l(左上角)、:r(右下角)中的任何一个。

在幕后完成所有繁重工作的主要结构是画布的子类型。画布是用于栅格化打印的图形对象。基本上,它使用Unicode字符来表示像素。

Canvas=BrailleCanvas(40,10,#列数和行数(字符)Origin_x=0,Origin_y=0,#在虚拟空间中的位置宽度=1,高度=1)#虚拟空间线的大小!(canvas,0.,0.,1.,1.,:Blue)#虚拟空间点!(canvas,rand(50),rand(50),:red)#虚拟空间线!(canvas,0.,1.,.5,0.,:黄色)#虚拟空间像素!(画布,5,8,:红色)#像素空间。

您可以分别使用nrow(Canvas)和ncols(Canvas)访问画布的高度和宽度(以字符为单位)。您可以将这些函数与printrow结合使用,以便将画布嵌入到您想要的任何位置。例如,printrow(STDOUT,Canvas,3)将画布的第三字符行写入标准输出。

正如您所看到的,当多个像素由一个字符表示时,出现的一个问题是很难分配颜色。这是因为字符的每个像素可以属于不同的颜色组(每个字符只能有一种颜色)。此包使用针对整个组的颜色混合来处理此问题。

BrailleCanvas:这种类型的画布可能是Unicode打印分辨率最高的画布。它本质上使用盲文符号的Unicode字符作为像素。这可以有效地将每个字符转换为8个像素,可以使用二进制操作分别对其进行操作。

BlockCanvas:该画布也是基于Unicode的。它的分辨率是BrailleCanvas的一半。与BrailleCanvas不同,像素之间没有明显的间距。此画布有效地将每个字符转换为4个像素,可以使用二进制操作分别对其进行操作。

HeatmapCanvas:该画布也是基于Unicode的。它的分辨率是BlockCanvas的一半。此画布使用前景和背景终端颜色,有效地将每个字符转换为2色像素。因此,画布的行数是正在显示的y坐标数的一半。

AsciiCanvas和DotCanvas:这两个画布仅使用标准ASCII字符进行绘制。当然,它看起来没有基于Unicode的好。但是,在某些情况下,它可能会产生更好的结果。将打印打印到文件就是其中一种情况。

密度画布:与BrailleCanvas不同,密度画布不会简单地将像素标记为已设置。相反,它为每个字符递增一个计数器,以跟踪该字符中绘制的像素的频率。再加上跟踪最大频率的变量,画布因此可以绘制数据点的密度。

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

要安装UnicodePlot,请启动Julia并键入以下代码-截取到REPL中的代码。它利用了当地的Juliapackage马槽。