我正在尝试制作很多不同种类的 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 的灰色。没人能看出区别