
私は LaTeX を勉強しているところなので、これが愚かな質問だったら申し訳ありませんが、マニュアルを読み、YouTube の動画を見て、ブログを読みましたが、なぜこれが機能しないのかまだわかりません。単純な棒グラフを作成したいと考えています。データを表示するのはすべてうまくいきますが、実際に棒グラフのように見えるコードを追加しようとすると、最後の座標が消えてしまいます。理由はわかりません。これは私のコードです。上部に「pgfplots」をリンクしました (関連する場合は、別のグラフ用の「pgf-pie」もリンクしています)。
\begin{tikzpicture}
\begin{axis}[
%title= ,
ymin=0, ymax=10,
x tick label style={/pgf/number format/1000 sep=},
ybar interval=1,
xlabel={$estado$},
ylabel={$frecuencia$},
symbolic x coords={CA,TX,AZ},
xtick=data,
]
\addplot coordinates { (CA,9) (TX,8) (AZ,8)};
\end{axis}
\end{tikzpicture}
問題は、Overleaf から取得した次の 2 行を追加したときに発生します。
x tick label style={/pgf/number format/1000 sep=},
ybar interval=1
なぜこのようなことが起こるのか、またどうすれば棒グラフを作成できるのか知っている人はいますか? ありがとうございます
答え1
より複雑な入力データでは、座標プロットすぐに混乱してしまいます(私は座標プロット個々のポイントを追加したり、同様のことをするために)。
通常、次のような入力データのテーブルがあります。
X Y
CA 9
TX 8
AZ 8
だから、これをどうやって行うかを知っておくのは良いことですテーブルプロット。
symbolic x coords={CA,TX,AZ},
ここでは必要ありません。代わりに:
xticklabels from table={\inputdata}{X}, % <--- !
\documentclass[margin=3mm, tikz]{standalone}
\usepackage{pgfplotstable} % <--- !
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\pgfplotstableread[]{
X Y
CA 9
TX 8
AZ 8
}\inputdata
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=0, ymax=10,
%x tick label style={/pgf/number format/1000 sep=},% not used
ybar, % changed
enlarge x limits = 0.4, % new
xlabel=\textit{estado},
ylabel=\textit{frecuencia},
%symbolic x coords={CA,TX,AZ}, % not needed
xticklabels from table={\inputdata}{X}, % <--- !
xtick=data,
]
\addplot table[x expr=\coordindex, y=Y]{\inputdata};
\end{axis}
\end{tikzpicture}
\end{document}
答え2
次のようなものを探しているのではないでしょうか:
\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ymin=0, ymax=10,
x tick label style={/pgf/number format/1000 sep=},
ybar, % changed
enlarge x limits = 0.4, % new
xlabel=\textit{estado},
ylabel=\textit{frecuencia},
symbolic x coords={CA,TX,AZ},
xtick=data,
]
\addplot coordinates { (CA,9) (TX,8) (AZ,8)};
\end{axis}
\end{tikzpicture}
\end{document}