如何在gnuplot中添加横向直方图?

问题描述 投票:0回答:2

我有一个疑问。如何通过 gnuplot 旋转绘图?

---------------------------
Row data.

0.000   0.0000157

0.001   0.0491343

0.002   0.0644647

0.003   0.0637064

0.004   0.063162
…
30.000  1.70000
---------------------------

我使用低数据制作了两个图 (A)、(B)。

(A) 图形命令

gnuplot> plot "RMSD_DATA.txt" using 1:2 with line

(B) 图形命令

bin_width = 0.001

bin_number(x) = floor(x/bin_width)

rounded(x) = bin_width * bin_number(x)

plot "MY_RMSD.txt" using (rounded($2)):(2) smooth frequency with line

我想使用两个数据制作这个表格。

所以,我想知道如何旋转B图。

我不关心标签旋转。

linux rotation gnuplot
2个回答
1
投票

要“反转函数”,修改“绘图”线就足够了:

plot "MY_RMSD.txt" using 2:(rounded($2)) smooth frequency with line

要反转轴,您可以在绘图之前设置范围,反转最大值和最小值:

set yrange [Max:Min]

(如果我理解得很好,在你的情况下,Min = 0,Max = 30。)


0
投票

OP 的原标题“如何通过 gnuplot 旋转图表”并没有描述完整的故事。实际的事情是创建横向直方图

以下示例说明了 Christoph 在评论中基本上提到的内容。

编辑:现在将第二个图的 y 范围设置为与第一个图相同。

脚本:

### plotting sideways histogram
reset session

# create some random test data
set table $Data
    set samples 2000
    plot '+' u (x0=$0):(invnorm(rand(0))) w table
    set samples 1000
    plot '+' u (x0+$0):(invnorm(rand(0))*0.5-2) w table
unset table

graphSplit = 0.75
binwidth   = 0.25
bin(x)     = floor(x/binwidth)*binwidth

set xrange[:] noextend
set key noautotitle

set multiplot
    set rmargin screen graphSplit
    set offset graph 0.05, graph 0.05,0,0
    plot $Data u 1:2 w l
    
    set rmargin -1
    set lmargin screen graphSplit+0.02
    set yrange[GPVAL_Y_MIN:GPVAL_Y_MAX]   # set identical range as first plot
    unset ytics
    set table $Histo
        plot $Data u (bin($2)):(1) smooth freq w l
    unset table
    plot $Histo u 2:1 w l
unset multiplot
### end of script

结果:

© www.soinside.com 2019 - 2024. All rights reserved.