Gnuplot:根据X值为函数绘图着色的实现方法
在Gnuplot中根据X值为函数(非数据文件)按自定义调色板着色
刚好我之前也折腾过类似的需求,用gnuplot实现这个其实很简单,核心是利用plot命令里的调色板映射功能,把X值当作颜色的依据就行。下面一步步给你讲清楚:
1. 确认自定义调色板
你已经定义的这个调色板完全没问题,它把0-5的数值直接对应到指定颜色,刚好匹配你的X区间:
set palette defined ( 0 'purple', 1 'blue', 2 'green', 3 'yellow', 4 'orange', 5 'red' )
2. 核心绘图命令
要让函数的颜色随X值变化,关键是告诉gnuplot用X值来映射调色板。因为gnuplot默认用z轴值来关联调色板,所以我们只需要在绘图时指定z=x即可。
比如绘制sin(x)的完整命令:
# 可选:开启颜色条,方便查看颜色对应的值 set colorbox # 绘图区间限定在[0:5],用线条绘制,加粗线条,用X值映射调色板 plot [0:5] sin(x) with lines lw 3 palette z=x title "sin(x) colored by X value"
3. 调整颜色过渡效果
- 如果想要离散的颜色块(每个X整数区间对应一种颜色),可以添加以下设置,确保gnuplot只使用你定义的6种颜色,不会插值出中间色:
set cbrange [0:5] set palette maxcolors 6 - 如果想要平滑的颜色渐变,直接去掉上面两行就行,gnuplot会自动在你定义的颜色之间生成过渡色。
4. 扩展:用点绘图的情况
如果想用点而不是线条展示,只需要把with lines改成with points,再调整点的样式和大小:
plot [0:5] sin(x) with points pt 7 ps 2 palette z=x title "sin(x) points colored by X value"
你可以根据自己的需求调整线条宽度、点样式这些参数,运行后就能看到sin(x)曲线从紫色到红色随X值渐变的效果啦~
内容的提问来源于stack exchange,提问作者pelegs
相关产品推荐
相关产品推荐

