【问题标题】:Plotting horizontal lines across histogram bars在直方图条上绘制水平线
【发布时间】:2012-07-30 09:00:21
【问题描述】:

我有一个实验,我测量了一些算法相对于三个基线的性能。因此,我想为算法绘制直方图,通过直方图条绘制各种样式的水平线以显示基线。

下面是我通过在 Gnuplot 生成的图表上手动绘制水平线生成的示例。直方图“sentence”和“document”代表我测试的算法,“mono”、“random”和“MFS”是基线。

有什么方法可以在 Gnuplot 本身中做到这一点吗?如果没有,任何人都可以推荐另一个可以做到这一点的工具吗?或者也许我应该使用更好的可视化技术?

【问题讨论】:

    标签: charts plot gnuplot histogram data-visualization


    【解决方案1】:

    这绝对是可能的。这是我编造的一个小例子:

    一、数据文件"data.dat"

    #histograms
    1 3 stack1
    2 2 stack2
    3 1 stack3
    
    
    #mono
     .6
     .6
    
     1.5
     1.5
    
     3.1
     3.1
    

    现在绘制 gnuplot 脚本:

    set yrange [0:*]
    set style data histograms 
    set style histogram cluster gap 1
    
    IDX=-1
    xpos(x)=(IDX=IDX+1, IDX%2==0)?(IDX/2-.5):(IDX/2+.5)
    
    set style fill solid
    plot 'data.dat' index "histograms" u 1:xtic(3) title "column1", \
         '' index "histograms" u 2 title "column2", \
         '' index "mono" u (xpos($1)):1 w lines ls -1 title "mono"
    

    这比我的上一个版本要复杂一些。绘制直方图集群时,每个集群都以一个整数为中心,从 0 开始,每个集群递增 1(无论您对 xtics 和标签的设置如何)。我所做的是使用该信息来简化数据文件。现在这个绘图命令将 2 个不同的数据集绘制为直方图(取自数据文件“直方图”部分的每一列),第一个添加 xtic 标签。然后是棘手的部分:我编写了一个具有副作用的函数(我认为 gnuplot 内联函数在 gnuplot 4.4 中是新的)。每次调用它时,变量IDX 的值都会递增——因此,xrange 上的当前位置始终是IDX/2。此函数在返回 IDX/2-.5IDX/2+.5 之间交替。请注意,要创建另一个数据集 random,您需要另一个函数 xpos2,它与 xpos1 相同,但它使用单独的迭代器。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 2022-01-21
    相关资源
    最近更新 更多