pgfplots:线锐利图直方图 - 值缺失且值太多

pgfplots:线锐利图直方图 - 值缺失且值太多

我有价值观 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}

相关内容