如何使 \newcommand 与 \ticknum 一起工作

如何使 \newcommand 与 \ticknum 一起工作

我正在尝试制作很多不同种类的 PGFplots 标签样式,因此我尝试定义不同的值并用来\ticknum选择其中之一

\newcommand{\x0}{0.3}
\newcommand{\x1}{0.5}
\newcommand{\x2}{0.7}

...

every x tick label/.style={
    rotate=45,anchor=north east, text opacity=\x\ticknum,
},

但每次这都会给我这个错误

! 未定义控制序列。\tikz@textopacity ->\x\ticknum \end{axis}

如果成功,我还想定义不同的变量,rotate例如,为每个 x 刻度更改不同的值。我该如何实现这个功能?

编辑 :这对于颜色来说就像一个魔法,但我正在尝试让类似的东西也能用于数值。

\definecolor{col0}{RGB}{0,0,255}
\definecolor{col1}{RGB}{255,0,0}
\definecolor{col2}{RGB}{0,255,0}

...

every extra x tick/.style={
    grid=none, 
    tick label style={draw=col\ticknum},
},

这是一个完整的代码

\documentclass{article}
\usepackage[a4paper,tmargin=5cm,bmargin=0cm,lmargin=0cm,rmargin=0.2cm,footskip=0cm]{geometry}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{adjustbox}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{groupplots}

\begin{document}



\begin{adjustbox}{center}
\begin{tikzpicture}
\definecolor{COL0}{RGB}{255,0,0}
\definecolor{COL1}{RGB}{0,255,0}
\newcommand{\x0}{1}
\newcommand{\x1}{1}
\begin{axis}[
    /pgfplots/ymin=0,
    height=10cm,width=20cm,
    ybar stacked,
    /pgf/bar width=0.952381cm,           
    legend style={at={(0.5,0.98)},
      anchor=north,legend columns=-1,font=\Large},
    symbolic x coords={1,2},
    xtick=data,
    x=1.14286cm,                           
    enlarge x limits={abs=0.666667cm},  
    every x tick label/.style={
        rotate=45,anchor=north east, text opacity=1, inner sep=5pt    %\x\ticknum (trying make this to work)
    },
    xticklabels={Text A,},
    every extra x tick/.style={
        grid=none, 
        tick label style={draw=COL\ticknum},    %Here this works 
    },
    extra x ticks={2},
    extra x tick labels={Text Extra},
    ]

\addplot+[fill=COL0,ybar] plot coordinates {(1,0.00519089)(2,0.0850676)};
\addplot+[fill=COL1,ybar] plot coordinates {(1,1.74808)(2,1.06387)};
\legend{\strut A,\strut B}

\end{axis}
\end{tikzpicture}
\end{adjustbox}
\end{document}

答案1

我找到了一个解决方法,这样我就不必指定不透明度了。我只是把每个标签都做成额外的标签,然后这样做,并为每个特性指定不同的颜色

\definecolor{FILL0}{RGB}{255,255,255}
\definecolor{FILL1}{RGB}{255,0,0}

\definecolor{DRAW0}{RGB}{255,255,255}
\definecolor{DRAW1}{RGB}{128,255,50}

\definecolor{TEXT0}{RGB}{255,128,128}
\definecolor{TEXT1}{RGB}{128,255,128}

every extra x tick/.style={    
    grid=none,
    tick label style={fill=FILL\ticknum, draw=DRAW\ticknum,  text=TEXT\ticknum},     
},

这样,我就可以挑选看起来不透明度为 0.5 的颜色。因此,我不会将文本设置为不透明度为 0.5 的黑色,而是将文本设置为不透明度为 1 的灰色。没人能看出区别

相关内容