我有一张使用箱线图的简单图表,我正在尝试自定义外观。我已经完成了一部分,但在平均值方面遇到了麻烦。 我更改了框的颜色和中位数,但平均值有点丢失了。我使用以下方法更改了框:
\pgfplotsset{
boxplot/draw/box/.code={%
\draw[/pgfplots/boxplot/every box/.try,color=.!50!white]
(boxplot box cs:\pgfplotsboxplotvalue{lower quartile},0)
rectangle
(boxplot box cs:\pgfplotsboxplotvalue{upper quartile},1)
;
},%
}
按照手册(添加“,color =。!50!white”)和中位数类似,但是当我尝试对平均值进行同样的事情时,
\makeatletter
\pgfplotsset{
boxplot/draw/average/.code={%
\draw[/pgfplots/boxplot/every average/.try,fill=red]
\pgfextra
\pgftransformshift{%
\pgfplotsboxplotpointabbox
{\pgfplotsboxplotvalue{average}}
{0.5}%
}%
\pgfuseplotmark{\tikz@plot@mark}%
\endpgfextra
;
},
}
\makeatother
什么都没改变。我尝试了许多其他方法,包括添加:
\addplot+[boxplot prepared={ % IE11 dotget
draw position=1,
every average/.style={fill=red,mark={diamond*}},
average=100.2, lower whisker=98.1, lower quartile=98.4, median=100.5, upper quartile=101.2, upper whisker=101.5}]
coordinates { };
但还是没有快乐。
谢谢你的帮助!../戴夫
答案1
只需在命令前添加一个\color
命令\draw
即可实现所需的结果。
(查看下面的代码,它使用来自 PGFPlots 手册的代码并添加彩色线给出了一个示例。)
% used PGFPlots v1.15
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{
pgfplots.statistics,
}
\makeatletter
\pgfplotsset{
% example copied from the manual
boxplot/draw/average/.code={%
\color{.!50!green} % <-- added
\draw[/pgfplots/boxplot/every average/.try]
\pgfextra
% do NOT use \draw[mark=*] plot coordinates because
% boxplots uses the same plot handler to draw its
% outliers.
\pgftransformshift{%
\pgfplotsboxplotpointabbox
{\pgfplotsboxplotvalue{average}}
{0.5}%
}%
\pgfuseplotmark{\tikz@plot@mark}%
\endpgfextra
;
},
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}[
]
\addplot+ [
boxplot prepared={
average=100.2,
lower whisker=98.1,
lower quartile=98.4,
median=100.5,
upper quartile=101.2,
upper whisker=101.5,
},
] coordinates { };
\end{axis}
\end{tikzpicture}
\end{document}