2

Julia 具有令人愉快的能力,可以生成由 Unicode 符号构成的绘图,这些符号以非常直接的方式直接打印到命令行。例如,以下代码直接在命令行生成正弦函数的 Unicode 图:

using Plots
unicodeplots();
x = [0:0.1:2*pi;];
y = sin.(x);
plot(x,y)

我想尝试找到一种方法来直接在命令行上创建这种形式的动画图。理想情况下,我想在 Unicode 中生成一个“更新”的单一图,使其看起来像动画一样。

然而,尽管在命令行中打印数百个不同的帧自然不那么吸引人,但如果它“看起来”像动画,那么这样的解决方案是可以接受的。另一个不太可接受的解决方案是将这样的 Unicode 图以如下方式打印到 gif 中:对所有平台都一致;尝试做任何涉及陪审团操纵@animate 和@gif 的尝试都基本上失败了,因为这两个函数甚至无法将Unicode 图打印到Julia 的Windows 形式的文件中。

更新:这是一个在命令行中生成“动画”的代码示例,这是不可接受的,它只是在命令行中绘制每个不同的帧,然后是由特殊 Unicode 字符提供的“间距”(由 niczky12 提供的提示):

using Plots
unicodeplots();
n = 100;
x = [0:0.1:4*pi;];

for i = 1:30
    y = sin.(x .+ (i/2));
    plot(x, y, show=true, xlims = (0,4*pi), ylims = (-1,1))
    sleep(0.01)
    println("\33[2J")
end
4

1 回答 1

1

一个轻微的改进可能是这样的:

let
   print("\33[2J")
   for i in 1:30
      println("\33[H")
      y = sin.(x .+ (i/2));
      plot(x, y, show=true, xlims = (0,4*pi), ylims = (-1,1))
      sleep(0.01)
   end
end

动画 unicode 图

于 2022-02-03T10:29:13.533 回答