【问题标题】:GNUPlot - Plot 2D datapoints as MPEGGNUPlot - 将 2D 数据点绘制为 MPEG
【发布时间】:2014-08-26 18:32:50
【问题描述】:

我在 x-y 列中有一堆点,这是我使用一些 fortran 代码制作的。部分是这样的

   1.000          0.000
   0.996          0.063
   0.988          0.125
   0.976          0.187
   0.961          0.249
   0.941          0.309
   0.917          0.368
   0.890          0.426
   0.859          0.481
   0.825          0.535
   0.787          0.587
   0.746          0.636
   0.702          0.682

到目前为止,我可以将所有内容绘制在一张图像中。

但我需要做的是将这些点一次一个地绘制成电影。我宁愿不做 GIF,因为我需要时间滑块。当它移动时,我需要用线连接点。

但是,我发现的所有涉及 MPEG 的教程都是一次绘制一个 DAT 文件,然后将 JPEG 制作成影片。就像这个Make movie with data files using gnuplot,但我没有足够的资源。

或者,我尝试按照以下步骤操作:Gnuplot - plotting position(xyz) vs time data inside a specified space (eg a box) with a pause,然后将其转换为 MPEG,但我无法让他们的代码正常工作。我得到了所有帧的完整情节,只有 n=# 部分是动画。

不过,我能够获得“plot f(x, t)”的动画效果。

(编辑:我没有为这些点设置动画的代码。真的)

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    要一次动画一个点,您可以按如下方式进行:

    # calculate the number of points
    stats 'file.txt' using 1:2 nooutput
    
    # if you want to have a fixed range for all plots
    set xrange [STATS_min_x:STATS_max_x]
    set yrange [STATS_min_y:STATS_max_y]
    
    set terminal pngcairo size 800,400
    outtmpl = 'output%07d.png'
    
    do for [i=0:STATS_records-1] {
        set output sprintf(outtmpl, i)
        plot 'file.txt' every ::::i with lines title sprintf('n = %d', i)
    }
    set output
    

    最后使用类似的东西

    ffmpeg -i pic%07d.png movie.mpeg
    

    转换成电影。

    注意,对于plot,您必须使用every ::::i(只有四个:)来限制绘制点的数量。您链接的问题Gnuplot - plotting position(xyz) vs time data inside a specified space (eg a box) with a pause 必须使用五个: 来迭代数据,就像用于splot 的3D 绘图一样。

    【讨论】:

    • 冒号是干什么用的?另外,是否可以跳过关于计算点的第一行?无论如何,我的程序可以打印出来。
    • @Vardonir 冒号用作数据选择器。 help every 为您提供详细信息。您可以使用every 跳过第一行(或任何其他行)。例如every :::0::1 选择前两个 数据,而every ::0::1 选择前两行。 every ::1 跳过第一行并绘制其他所有内容。非常强大,但在 IMO 开始时有点混乱。
    • 当然可以跳过积分的计算。然后,您必须从其他地方获取迭代次数。此外,您必须决定是否应为所有图固定 x 和 y 范围,或者是否希望它们从一个图适应下一个图。我建议您使用固定范围,在这种情况下您无论如何都需要使用stats
    • 成功了!谢谢!不过,FFMpeg 很难启动和运行(通常的“sudo apt-get install...”不起作用),但我让它工作了。
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多