导出时Gnuplot中的重叠行

时间:2016-10-29 12:14:12

标签: plot png gnuplot line

我正在尝试在gnuplot中绘制一条离散的布朗路径,其中涉及许多重叠线。这是它在qt终端中的显示方式(我用截图生成了图像):

brownian path

注意重叠的线条是如何以更强烈的颜色着色,这是美丽的。

如果我用png导出它,用

set term pngcairo size 1366,768 enhanced

我得到了这个:

brownian path (png)

所有线条的强度相同。设置transparent也无济于事。

这个MWE也是如此:

set term pngcairo size 1366,768 background '#000000' enhanced
set output "image.png"
unset key
set border 0
unset xtics
unset ytics

set samples 1e6
set xrange [0:0.1]
p sin(1/x) w l lw 0.3
set output

mwe

我每次都在运行gnuplot -d因此我的本地配置无法加载。我应该如何导出绘图以获得与GUI中相同的效果?

2 个答案:

答案 0 :(得分:1)

以下是我调查的一些结果:

  • 我也无法用pngcairo取得漂亮的成绩。当2条曲线相互重叠时,不会添加不透明度。
  • 导出到SVG并转换为PNG看起来好一点,无论是inkscape -z -e image.png -w 1600 -h 1200 image.svg还是convert -density 3000 -resize 1600x1200 image.svg image.png。此步骤可以作为system命令包含在gnuplot中。
  • 可以直接从qt窗口将qt渲染导出到png。左侧的第一个菜单图标→导出到图像
  • 理论上,这个过程可以直接从Gnuplot自动完成,无需用户交互。已提交补丁:https://sourceforge.net/p/gnuplot/patches/665/。据我所知,它尚未集成到Gnuplot 5.0.x
  • 以下是Gnuplot-dev的相关讨论。
  • 如果您喜欢冒险,可以尝试使用应用的补丁重新编译Gnuplot。 submitter可以帮助您。

答案 1 :(得分:1)

在这个问题中非常偏离主题,但作为一种解决方法,我制作了一个Julia脚本,复制了我正在寻找的图像感觉。我会在这里发布,以防任何人发现它有用。

using Images

function paint(Ny, Nx, iters=1e6; stepsize = 50)
    randstep() = rand([-1;1])
    x = Nx÷2
    y = Ny÷2
    M = zeros(Nx,Ny)
    for i in 1:iters
        rx = randstep()
        ry = randstep()
        for i in 1:stepsize
            x = mod1(x+rx, Nx)
            y = mod1(y+ry, Ny)
            M[x,y] += 1
        end
    end
    clamped = M/maximum(M)
    img = [Colors.RGB(0,mm,0) for mm in clamped]
end

img = convert(Image,paint(1366,768,1e4,stepsize=10))

save("coolbrownianwalk.png", img)

生成如下图像:

Not really a brownian walk but cool as hell