You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Gnuplot如何为正负交替曲线与X轴间区域交替填充颜色?

解决正负波动曲线与X轴区域交替填充的问题

我之前做数据可视化的时候刚好碰到过一模一样的需求,用gnuplot完全可以实现你想要的正负区域交替着色效果,我来帮你完善代码并解释细节:

基础实现方案(基于调色板)

你已经开头设置了调色板,只需要补充fillbetween相关的配置就能完成填充:

# 定义正负值对应的颜色:正值红,负值蓝
set palette model RGB defined ( 0 'red', 1 'blue' )
# 不需要显示颜色条,所以关闭它
unset colorbox
# 设置填充为半透明实心(0.5是透明度,可调整)
set style fill solid 0.5
# 根据你的数据范围调整X轴(这里用正弦曲线的默认范围示例)
set xrange [0:2*pi]

# 绘制曲线+填充区域
plot sin(x) with lines lw 2 title "Sine Curve", \
     sin(x) fillbetween y1=0 with filledcurves palette title "Filled Areas"

这段代码的核心逻辑:

  • fillbetween y1=0 指定填充曲线与X轴(y=0)之间的区域
  • palette 参数会自动根据曲线值的正负映射你定义的颜色:正值对应调色板索引0(红色),负值对应索引1(蓝色)
  • 如果你的数据来自文件,把sin(x)替换成你的数据路径,比如'your_data.txt' using 1:2即可

更灵活的分区域绘制方案

如果需要单独控制正负区域的填充样式(比如不同透明度),可以分开绘制两个区域:

set style fill solid 0.6
set xrange [0:2*pi]

plot sin(x) with lines lw 2 title "Sine Curve", \
     # 填充正值区域(红色)
     sin(x) where sin(x)>=0 fillbetween y1=0 with filledcurves fc 'red' title "Positive Regions", \
     # 填充负值区域(蓝色)
     sin(x) where sin(x)<0 fillbetween y1=0 with filledcurves fc 'blue' title "Negative Regions"

这种方式可以给正负区域设置不同的透明度、边框样式,适配更复杂的可视化需求。

如果你的数据是离散点格式,可以先通过smooth bezier处理成连续曲线再填充,或者调整filledcurves的参数(比如closed)来适配。

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

火山引擎 最新活动