You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何用gnuplot绘制带重叠透明效果的直方图?

在Gnuplot中实现重叠透明柱状图的方法

你遇到的问题核心在于gnuplot的histogram样式本质是为聚类或堆叠场景设计的,没法直接实现重叠显示+透明填充的效果。想要达到你要的效果,我们可以放弃histogram模式,改用boxes绘图类型来手动控制柱子的位置和透明度,具体方案如下:

关键思路

  • boxes替代histogram:histogram的clustered模式只是让柱子紧密排列而非重叠,rowstacked会堆叠数值,都不符合你的需求;而boxes允许我们直接指定每个柱子的x轴位置,轻松实现重叠。
  • 保持半透明填充:通过set style fill solid <alpha>设置透明度,数值越小(0到1之间)越透明,0.5是比较适中的半透明效果。

修改后的完整代码

set boxwidth 0.8 absolute  # 调整柱子宽度,0.8能让重叠的柱子保留部分边界,更易区分
set style fill solid 0.5 noborder  # 半透明填充,去掉边框让重叠效果更自然
set xtics in rotate by 90 offset first +0.5,0 right
set yrange [0:8000]
set xrange [90:180]

# 直接用boxes绘制,每个数据文件的柱子都对应相同的x轴位置(假设你的数据第一列是x值)
plot 'dat1.raw' using 1:3 lc rgb 'orange' with boxes, \
     'dat2.raw' using 1:3 lc rgb 'blue' with boxes, \
     'dat3.raw' using 1:3 lc rgb 'magenta' with boxes

细节调整

  • 如果想要完全重叠的效果,可以把boxwidth设为1.0;如果希望柱子部分重叠且保留更多独立视觉空间,可以把数值调小(比如0.6)。
  • 如果你原来的histogram是基于分类而非连续x值,只需要确保每个数据文件对应的x分类位置一致即可,比如用using ($0+1):3来指定分类的x坐标($0是数据行索引)。

这样调整后,你就能得到带透明填充的重叠柱状图,完全符合你的需求啦。

内容的提问来源于stack exchange,提问作者Gert Gottschalk

火山引擎 最新活动