如何在gnuplot绘图任意位置添加圆点等额外图形元素?
通用方案:在gnuplot任意位置添加不受字体限制的简单图形
如果你想避开字体规则,在gnuplot的标题区、绘图区等任意位置添加圆点、方块这类简单图形,以下几种通用方法可以解决问题:
方法1:直接用plot命令绘制图形点
利用gnuplot的绘图功能,通过指定坐标点和点类型,完全脱离字体约束。适合需要快速在指定位置添加图形的场景。
示例代码:
reset session set multiplot layout 1,2 # 第一个子图:在标题区域画实心圆点 set title " " # 留空标题避免占位 # 使用屏幕坐标定位(0,0是左下角,1,1是右上角),pt7是实心圆点,ps控制大小 plot sin(x), \ '-' with points pt 7 ps 2 lc rgb "black" notitle 0.85 0.95 # 屏幕坐标位置 e # 第二个子图:在标题区域画实心方块 set title " " plot sin(x**2), \ '-' with points pt 5 ps 2 lc rgb "black" notitle # pt5是实心方块 0.85 0.95 e unset multiplot
常用点类型参考:
pt 7:实心圆点pt 5:实心方块pt 6:空心圆点pt 4:空心方块
坐标支持screen()(屏幕比例)、graph()(绘图区比例)或实际数据坐标,灵活调整位置。
方法2:用set object创建独立图形元素
set object可以生成圆、矩形等独立图形,能精准定位到任何区域,完全不受文本规则影响,适合需要自定义大小和样式的场景。
示例代码:
reset session set multiplot layout 1,2 # 第一个子图:标题区添加实心圆点 set title "正弦曲线" # 圆形对象:屏幕坐标定位,size控制半径,fill solid填充实心 set object circle at screen 0.78,0.95 size screen 0.02 fill solid lc rgb "black" front plot sin(x) # 第二个子图:标题区添加实心方块 set title "平方正弦曲线" # 矩形对象:通过from/to指定对角坐标,fill solid填充实心 set object rectangle from screen 0.78,0.93 to screen 0.82,0.97 fill solid lc rgb "black" front plot sin(x**2) unset multiplot unset object
front参数确保图形显示在标题文字上方(如果有标题文本)- 可通过
lc设置颜色,size或坐标范围调整图形大小
方法3:在文本中嵌入图形转义符
如果需要将图形和文本结合排版,gnuplot的{* ... }转义语法可以直接绘制图形,不需要依赖字体中的特殊字符,兼容性更强。
示例代码:
reset session set multiplot layout 1,2 # 标题中嵌入圆点图形 set title "{*circle 0.8} 正弦曲线" # circle后数字是相对于文本的大小比例 plot sin(x) # 标题中嵌入方块图形 set title "{*square 0.8} 平方正弦曲线" plot sin(x**2) unset multiplot
内容的提问来源于stack exchange,提问作者Bryan-StackExchange
相关产品推荐
相关产品推荐

