You need to enable JavaScript to run this app. 如何在gnuplot中绘制带双x轴、双y轴及双独立坐标原点的水平条形图
优惠活动
大模型
产品
解决方案
定价
更多

如何在gnuplot中绘制带双x轴、双y轴及双独立坐标原点的水平条形图

Gnuplot双独立原点水平条形图实现说明

该双轴双独立原点的水平条形图完全可以通过Gnuplot实现,无需替换绘图工具。

实现逻辑

Gnuplot原生支持自定义任意坐标轴的锚定位置、数值映射范围,不需要额外坐标换算即可实现对角双独立原点的布局:

  • 数据集1(x1/y1坐标系,左上角原点):
    将y1轴锚定在绘图区左边界,x1轴锚定在绘图区上边界;反向设置y1轴的数值范围(从上到下数值递减),让两个轴的自然交点落在绘图区左上角,作为这套坐标系的原点。之后将数据集1的水平条形图映射到这套坐标系下,即可完成第一组数据的绘制。
  • 数据集2(x2/y2坐标系,右下角原点):
    将y2轴锚定在绘图区右边界,x2轴锚定在绘图区下边界;设置x2轴的数值方向为从右到左递增、y2轴的数值方向为从下到上递增,让两个轴的自然交点落在绘图区右下角,作为这套坐标系的独立原点。这套坐标系和第一套完全解耦,可设置独立的数值量程,不会互相干扰。

核心配置参考

实际编写Gnuplot脚本时,可通过以下核心命令快速搭建基础框架:

# 第一套坐标系(左上角原点)配置
set x1range [0: first_dataset_max]
set y1range [first_y_max: 0]
set x1axis at y first_y_max
set y1axis at x 0

# 第二套坐标系(右下角原点)配置
set x2range [second_dataset_max: 0]
set y2range [0: second_y_max]
set x2axis at y 0
set y2axis at x first_dataset_max

# 分别对应两套坐标系绘制水平条形
plot "dataset1.dat" using 2:1 with boxes axes x1y1, \
     "dataset2.dat" using 2:1 with boxes axes x2y2

可替代工具说明

如果在Gnuplot中调试自定义轴位置遇到障碍,可通过以下工具实现同类效果:

  • Matplotlib:支持自定义坐标轴显示位置、反向设置坐标范围,既可以通过原生双轴功能调试对角布局,也可以通过对齐两个独立子图的绘图区域实现双原点效果,灵活度较高。
  • Origin:内置无依赖的多轴锚定功能,可直接拖动坐标轴交点到指定位置生成对应坐标系,不需要手动编写坐标映射代码,适合快速出图的场景。
  • R语言ggplot2:通过次坐标轴配置结合坐标方向翻转,可实现双套独立坐标的对角布局,水平条形图的样式调整能力较强。

内容的提问来源于stack exchange,提问作者Christian Hähnlein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 09:06:03