我有价值观
1 2 2 3 3 4 4 4 4 5 5 5 6 6
并希望将其绘制为线尖图直方图。
因此,我设置:
hist={
handler/.style={sharp plot},
intervals=false,
},
但他不想显示数字 6 的 2 倍......
然后有一个奇怪的现象:如果我不设置,x filter/.expression={x==int(x) ? x : nan}
他也会显示有理值,y=0,例如 (x=0.5, y=0),这是正确的,因为列表中没有有理数。
他不知道xtick=data
吗?
所以这个过滤器是一个愚蠢的技巧,应该有一个正确的设置来只显示列表值。
€dit:顺便忘了说,可能没有数字 x=4 例如那么也应该有一个点 (x=4, y=0)...
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepgfplotslibrary{statistics}
\pgfplotstableread[header=false]{
1
2
2
3
3
4
4
4
4
5
5
5
6
6
}\mydata
\begin{document}
\begin{tikzpicture}
\begin{axis}[
%xmin=0, ruins the graph....
xmax=6,% works, but (x=6, y=2) still missing
ymax=5, % works
xtick=data, % no effect
xticklabels={1,...,6}, % no effect
grid=both,
axis lines=middle,
title={x=6, y=2 is missing\dots},
]
\addplot+ [
hist={
%bins=6,
% data min=1, % no effect
% data max=6, % no effect
handler/.style={sharp plot},
intervals=false,
},
% How can I get rid of this:
x filter/.expression={x==int(x) ? x : nan}% strange, but without this filter rational x-values (with y=0) too.....
] table [y index=0] {\mydata};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您需要 6 个箱子,每个箱子应该包含一个整数值,如果设置
bins=6,
data min=1,
data max=7,
\documentclass[a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepgfplotslibrary{statistics}
\pgfplotstableread[header=false]{
1
2
2
3
3
4
4
4
4
5
5
5
6
6
}\mydata
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=0,
grid=both,
axis lines=middle,
enlarge x limits,
enlarge y limits={upper}
]
\addplot+ [
hist={
bins=6,
data min=1,
data max=7,
handler/.style={sharp plot},
intervals=false
},
] table [y index=0] {\mydata};
\end{axis}
\end{tikzpicture}
\end{document}