You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正截断三元相图LaTeX绘制中的轴标签范围问题?

解决TikZ三元相图截断后轴标签范围错误的问题

我尝试使用TikZ包绘制下部截断的三元相图,要求x范围为75-100、y和z范围为0-25。使用xmin、ymax、zmax参数后,点能正确绘制,但轴标签仍显示0-100范围,请问如何解决?示例代码如下:

\documentclass{article}
\usepackage{inputenc}
\usepackage{authblk}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{tikz}

\usepgfplotslibrary{ternary} % LaTeX and plain TeX
\usepgfplotslibrary[ternary] % ConTeXt
\usetikzlibrary{pgfplots.ternary} % LaTeX and plain TeX
\usetikzlibrary[pgfplots.ternary] % ConTeXt

\title{}
\author{}
\date{}

\begin{document}
\maketitle

\begin{tikzpicture}
    \begin{ternaryaxis}[xlabel=A, ylabel=B, zlabel=C, xmin=0.75, ymax=0.25, zmax=0.25]
        \addplot3 coordinates {
            (0.87, 0.03, 0.1)
            (0.85, 0.05, 0.1)
            (0.83, 0.07, 0.1)
            (0.81, 0.09, 0.1)
        };
 
    \end{ternaryaxis}
\end{tikzpicture}

\end{document}

问题出在ternaryaxis默认会生成完整的0-1范围刻度,仅设置xmin/ymax等参数只会裁剪显示区域,但不会自动调整刻度标签。要解决这个问题,需要手动指定刻度值并强制限定轴显示范围:

  1. 强制限定轴显示范围:使用axis limits*参数明确指定所有轴的上下限,确保只显示截断后的区域;
  2. 手动设置刻度值:为每个轴指定符合需求的刻度点;
  3. 调整刻度标签格式:如果需要将小数转换为百分比(对应75-100、0-25的需求),可以通过刻度样式设置自动乘以100并取整。

修改后的完整代码如下:

\documentclass{article}
\usepackage{inputenc}
\usepackage{authblk}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{tikz}

\usepgfplotslibrary{ternary}
\usetikzlibrary{pgfplots.ternary}

\title{}
\author{}
\date{}

\begin{document}
\maketitle

\begin{tikzpicture}
    \begin{ternaryaxis}[
        xlabel=A, ylabel=B, zlabel=C,
        % 强制限定轴显示范围
        axis limits*={xmin=0.75,xmax=1,ymin=0,ymax=0.25,zmin=0,zmax=0.25},
        % 手动指定各轴刻度
        xtick={0.75,0.8,0.85,0.9,0.95,1},
        ytick={0,0.05,0.1,0.15,0.2,0.25},
        ztick={0,0.05,0.1,0.15,0.2,0.25},
        % 将刻度小数转换为百分比显示
        tick label style={
            /pgf/number format/fixed,
            /pgf/number format/precision=0,
            /pgf/number format/multiply by=100
        }
    ]
        \addplot3 coordinates {
            (0.87, 0.03, 0.1)
            (0.85, 0.05, 0.1)
            (0.83, 0.07, 0.1)
            (0.81, 0.09, 0.1)
        };
 
    \end{ternaryaxis}
\end{tikzpicture}

\end{document}

关键参数说明:

  • axis limits*:和普通axis limits不同,它会严格按照指定范围显示,不会自动扩展刻度;
  • xtick/ytick/ztick:手动定义刻度点,确保只显示你需要的数值;
  • tick label style里的multiply by=100:将0-1的小数刻度转换为0-100的百分比,匹配你75-100、0-25的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:37:06