【问题标题】:gnuplot "Skipping data file with no valid points"gnuplot“跳过没有有效点的数据文件”
【发布时间】:2019-01-15 08:02:47
【问题描述】:

我想使用与 gnuplot 命令在同一文件中的数据使用 rowstacked 直方图来绘制数据。 我在其他任何地方都没有发现同样的问题,并且尝试了很多想法都没有成功。

示例数据文件,我称之为 example.dat

Name    March   April   May
Bob     5       10      30
Alice   20      5       20
Tony    10      10      15
Cathy   15      15      10

这是一个 gnuplot 命令文件,我称之为 eg1.gp:

set title "Test chart for row stacked histogram" 
set style data histograms
set style histogram rowstacked
set boxwidth 0.6
set style fill solid 1.0 border -1
set key invert autotitle columnhead
set yrange [:50]
set ylabel "Number of Referrals"
set ytics 10
plot 'example.dat' using 2 t "March", '' using 3 t "April", '' using 4:xtic(1) t "May"

我正在使用 Linux Manjaro。 当我发出命令 $: gnuplot -persist eg1.gp 我得到预期的图表,如下所示: Stacked histogram eg1.png

到目前为止一切顺利。正如您所期望的那样,直方图有 4 个垂直条,每个有 3 种颜色代表每个名称的月份。

接下来,我将这两个文件合并为一个文件,调整命令以使用文件中的数据。这里是:

set title "Test chart for row stacked histogram" 
set style data histograms
set style histogram rowstacked
set boxwidth 0.6
set style fill solid 1.0 border -1
set key invert autotitle columnhead
set yrange [:50]
set ylabel "Number of Referrals"
set ytics 10

plot "-" using 2 t "March", '' using 3 t "April", '' using 4:xtic(1) t "May"
Name    March   April   May
Bob     5       10      30
Alice   20      5       20
Tony    10      10      15
Cathy   15      15      10

这个文件与前两个文件的组合相同,只是命令中的文件引用“example.dat”已替换为“-”,它告诉 gnuplot 查找紧随其后的数据(即是它在哪里)。 我将此文件保存为 eg2.gp 并发出命令 $: gnuplot -persist eg2.gp 结果是数据文件第二列的图表 - 即仅 3 月数据,加上 2 条警告消息,均显示“eg2.gp”,第 16 行:警告:跳过没有有效点的数据文件” . 这是新图像: stacked histogram eg2.png

x 轴上的名称已丢失。 eg2.gp 文件中的第 16 行是最后一行数据。 我认为正在发生的事情是,当 gnuplot 开始构建直方图中的第二行框时,它未能循环回文件数据部分的开头。 问题是,我如何指示 gnuplot 这样做?

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    您不能多次从标准输入 ("-") 读取相同的数据。您需要根据需要多次重复数据,并用e 分隔。

    自 5.0 版以来,gnuplot 具有允许您多次使用内联数据的数据块:

    $data <<EOD
    Name    March   April   May
    Bob     5       10      30
    Alice   20      5       20
    Tony    10      10      15
    Cathy   15      15      10
    EOD
    
    set title "Test chart for row stacked histogram" 
    set style data histograms
    set style histogram rowstacked
    set boxwidth 0.6
    set style fill solid 1.0 border -1
    set key invert autotitle columnhead
    set yrange [:50]
    set ylabel "Number of Referrals"
    set ytics 10
    
    plot $data using 2, '' using 3, '' using 4:xtic(1)
    

    而且您不需要指定明确的标题。使用set key autotitle columnhead 从数据中读取标题。

    【讨论】:

    • 非常感谢。这是我一直在寻找的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2014-05-09
    • 2015-08-12
    • 2015-06-15
    • 1970-01-01
    相关资源
    最近更新 更多