我正在尝试从数据中获取一个箱线图,其中包含两条线和第二行中的频率。例如:
我不知道如何使用“foreach”或箱线图的特殊命令(pgfplots)
\documentclass[png,tikz,border=30pt]{standalone}
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}% version
\usetikzlibrary{pgfplots.statistics}
\begin{document}
\begin{tabular}{|c|c|c|c|c|c|c|}\hline centre de classe & 0.5 & 1.5 & 2.5 & 3.5 & 4.5 & 5.5
\\\hline effectif & 2 &3 &4 &5 &2
& 1\\\hline
\end{tabular}
% % % % % % %
% % % % % % % % i need to do this % % % % % % %
\begin{tikzpicture}
\begin{axis}[y=1.5cm, ymax=2]
\addplot+[boxplot]
table[row sep=\\,y index=0] {
data\\
0.5 \\ 0.5 \\ 1.5 \\ 1.5 \\1.5 \\ 2.5 \\ 2.5 \\2.5 \\2.5 \\ 3.5\\ 3.5\\3.5\\3.5\\3.5\\ 4.5 \\ 4.5 \\5.5 \\
}
[above]
node at
(boxplot box cs: \boxplotvalue{lower whisker},1)
{\pgfmathprintnumber{\boxplotvalue{lower whisker}}}
node at
(boxplot box cs: \boxplotvalue{lower quartile},1)
{\pgfmathprintnumber{\boxplotvalue{lower quartile}}}
node[left] at
(boxplot box cs: \boxplotvalue{median},0.5)
{\pgfmathprintnumber{\boxplotvalue{median}}}
node at
(boxplot box cs: \boxplotvalue{upper quartile},1)
{\pgfmathprintnumber{\boxplotvalue{upper quartile}}}
node at
(boxplot box cs: \boxplotvalue{upper whisker},1)
{\pgfmathprintnumber{\boxplotvalue{upper whisker}}}
;
\end{axis}
\end{tikzpicture}
\end{document}
我尝试了每一个:
\usepackage[francais]{babel}% pour avoir \addto
\usepackage{amsmath}
\newcommand*\eaddto[2]{% version développée de \addto
\edef\tmp{#2}%
\expandafter\addto
\expandafter#1%
\expandafter{\tmp}%
}
\newcommand{\essai}{}
\foreach \x in {1,...,2}
{\eaddto\essai{ 0.5 \symbol{92} \symbol{92} }}
\foreach \x in {1,...,3}
{\eaddto\essai{ 1.5 \symbol{92} \symbol{92} }}
\foreach \x in {1,...,4}
{\eaddto\essai{ 2.5 \symbol{92} \symbol{92} }}
\foreach \x in {1,...,5}
{\eaddto\essai{ 3.5 \symbol{92} \symbol{92} }}
\begin{align*}
\essai
\end{align*}
\foreach \x in {1,...,2}
{\eaddto\essai{ 4.5 \symbol{92} \symbol{92} }}
\begin{align*}
\essai
\end{align*}
因此,\essai
给出“ 0.5 \ 0.5 \ 1.5 \1.5 \1.5 .....”但我不知道如何在箱线图上下文中使用它
答案1
我找到了一种方法来满足我的需要:将数据放在一个列表中,因为箱线图手册解释道:它需要一维列表。
\documentclass[a4paper,french,svgnames,pdf]{article}
\usepackage[utf8x]{inputenc}
\usepackage[frenchb]{babel}
\usepackage[np]{numprint}
\usepackage{pgf,tikz}
\usepackage{fp}
\usetikzlibrary{fpu}
\usepgflibrary{fpu}
\usepackage{colortbl}
%\usepackage{xcolor}
%\usepackage{units}
\usepackage{ifthen}
\usepackage{makecell}
% % % % % % % % % stats
\usepackage{pgfplots} % Use tikzpicture for the diagrams
\pgfplotsset{compat=1.12}% Unbedingt unmittelbar nach dem Laden von
% eines aktuellen pgfplots zu bevorzugen!
\usepgfplotslibrary{statistics}% pgf-Libraries besser so laden
\usepackage{pgfplotstable}
\usetikzlibrary{pgfplots.statistics}
% % % % % % % % set comma for french decimal separator
\pgfset{/pgf/number format/dec sep={,}}
\pgfkeys{/pgf/number format/.cd, set decimal separator={,},set thousands separator={\ }}
%*****************************************************************
\FPseed=1234
%\FPseed=1237 % TRÈS IMPORTANT pour compilations multiples avec le même sujet d'initialiser toujours le même nombre aléatoire.
\pgfmathsetseed{2056}
%***********************************
\begin{document}
\FPeval\tempsA{trunc(2+random*2,0)}
\FPeval\tempsB{trunc(3+random*2,0)}
\FPeval\tempsC{trunc(4+random*3,0)}
\FPeval\tempsD{trunc(5+random*3,0)}
\FPeval\tempsE{trunc(4+random*2,0)}
\FPeval\tempsF{trunc(2+random*2,0)}
\FPeval\tempsG{trunc(1+random*2,0)}
\FPeval\sommeSTAT{trunc(\tempsA+\tempsB+\tempsC+\tempsD+\tempsE+\tempsF+\tempsG,0)}
\par
\normalsize
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}\hline Durée t (en h)& $ \mathopen{[} 0 ; 1\mathopen{[} $ &
$\mathopen{[} 1 ; 2\mathopen{[} $ & $\mathopen{[} 2;3\mathopen{[} $ & $\mathopen{[} 3; 4\mathopen{[} $ & $\mathopen{[} 4 ;5\mathopen{[} $ & $\mathopen{[} 5
;6$ & $\mathopen{[} 6 ; 7\mathopen{[} $ & Total--- \\\hline Effectif & \tempsA & \tempsB & \tempsC & \tempsD & \tempsE & \tempsF
& \tempsG & \\\hline Centre de classe $x_i$ & 0,5 & 1,5 & 2,5 & 3,5 & 4,5
& 5,5 & 6,5 & \cellcolor{gray}\\\hline
\end{tabular}
\par
% % % % % % % % % % % %
% new table , one for each column
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={0.5}},
columns={new}]
{\tempsA}
\table
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={1.5}},
columns={new}]
{\tempsB}
\tableA
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={2.5}},
columns={new}]
{\tempsC}
\tableB
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={3.5}},
columns={new}]
{\tempsD}
\tableC
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={4.5}},
columns={new}]
{\tempsE}
\tableD
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={5.5}},
columns={new}]
{\tempsF}
\tableE
\pgfplotstablenew[
% define how the ’new’ column shall be filled:
create on use/new/.style={create col/expr={6.5}},
columns={new}]
{\tempsG}
\tableF
% % % % % % %
% % add each column to the first one % % % % %
\pgfplotstablevertcat{\table}{\tableA} % loads ‘tableA’ -> ‘\table’
\pgfplotstablevertcat{\table}{\tableB}
\pgfplotstablevertcat{\table}{\tableC}
\pgfplotstablevertcat{\table}{\tableD}
\pgfplotstablevertcat{\table}{\tableE}
\pgfplotstablevertcat{\table}{\tableF}
% % % % % % % see \table
\pgfplotstabletypeset\table \par
\textbf{Construire } la boite à moustache .
\shorthandoff{;}
% % % % % % seems uncessary here, but needed in my final .tex in french
\begin{tikzpicture}
\begin{axis}
[boxplot/draw direction=x, y=1.5cm,ymax=2,
boxplot/average=auto, boxplot/every average/.style={mark=},
% [y=1.5cm, ymax=2,
ytick={1,3,...,9}, xtick={0.5,1.5,2.5,3.5,4.5,5.5,6.5}, xticklabels={0.5, 1.5, 2.5,3.5,4.5,5.5,6.5},
someline/.style={ultra thick,red}
]
\addplot+[boxplot] table[y=new]\table coordinate (A) at (boxplot box cs: \boxplotvalue{average}, 0.5)
node at
(boxplot box cs: \boxplotvalue{lower whisker},1.25)
{\pgfmathprintnumber{\boxplotvalue{lower whisker}}}
node at
(boxplot box cs: \boxplotvalue{lower quartile},1.25)
{\pgfmathprintnumber{\boxplotvalue{lower quartile}}}
node at
(boxplot box cs: \boxplotvalue{upper quartile},1.25)
{\pgfmathprintnumber{\boxplotvalue{upper quartile}}}
node at
(boxplot box cs: \boxplotvalue{upper whisker},1)
{\pgfmathprintnumber{\boxplotvalue{upper whisker}}}
node[left] at
(boxplot box cs: \boxplotvalue{median},0.5)
{\pgfmathprintnumber{\boxplotvalue{median}}}
;
\end{axis}
\end{tikzpicture}
\strut
\end{document}