Ich möchte die folgenden Daten darstellen. Ich verwende die CSV-Datei und das Paket pgfplotstable.
- (0,2.42130785530195E-02),
- (113.8,2.42130785530195E-02),
- (227.6,2.42130781357695E-02),
- (341.3,2.42130779271445E-02),
- (455.1,2.42130777185196E-02),
- (568.9,2.42130775098946E-02),
- (682.7,2.42130773012696E-02),
- (796.4,2.42130770926447E-02),
- (910.2,2.42130768840197E-02),
- (1024,2.42130766753947E-02),
Ich bekomme diese Handlung
Die minimale Arbeitsumgebung:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{siunitx}
\begin{document}
\pgfplotstableread[col sep = comma]{lossprob_jin1.csv}\loadedtable
\begin{figure*}
\centering
\begin{tikzpicture}
\begin{axis} [xlabel=Buffer-Size (bits),ylabel=Loss Probability (\%), legend entries = {H=0.6448}]
\addplot table [x=xsw, y=plp, col sep=comma] {\loadedtable} ;
\end{axis}
\end{tikzpicture}
\end{figure*}
\end{document}
Antwort1
Diese Unterschiede sind zu klein, als dass PGFPlots sie verarbeiten könnten. Sie können dies umgehen, indem Sie von allen Zahlen einen festen Betrag abziehen gnuplot
und die Beschriftungen „fälschen“:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
scaled y ticks=false,
y tick label style={
/pgf/number format/fixed,
/pgf/number format/precision=0
},
yticklabel=0.02421307\pgfmathprintnumber{\tick},
x tick label style={
/pgf/number format/1000 sep={}
},
xlabel=Buffer size in bits,
ylabel=Loss proabiblity in \%
]
\addplot[raw gnuplot, mark=*] gnuplot {
plot 'data.dat' using 2:($1-0.02421307)*1e10;
};
\end{axis}
\end{tikzpicture}
\end{document}
Aber ehrlich gesagt sollten Sie wahrscheinlich eine andere Möglichkeit finden, die Auswirkung der Puffergröße auf die Verlustwahrscheinlichkeit anzuzeigen (sind Sie sicher, dass diese Auswirkung überhaupt real oder signifikant ist?)
Antwort2
Dies ist eine Problemumgehung mitLuaTeX
\documentclass{standalone}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{compat=1.12}
\usepackage{siunitx}
\begin{document}
\pgfplotstableread
{
x y
0 2.42130785530195E-02
113.8 2.42130783443945E-02
227.6 2.42130781357695E-02
341.3 2.42130779271445E-02
455.1 2.42130777185196E-02
568.9 2.42130775098946E-02
682.7 2.42130773012696E-02
796.4 2.42130770926447E-02
910.2 2.42130768840197E-02
1024 2.42130766753947E-02
}\Bsizeloss
\begin{tikzpicture}
\begin{axis}[xlabel={Buffer-Size (bits)},
ylabel={Loss Probability, \% ($\times 10^{10}-242130700$)},
ytick={67,73,79,85},
legend entries = {H=0.6448},
grid = major
]
\addplot+ table[y expr=\directlua{tex.print(\thisrow{y}*1E10-242130700)},x=x] {\Bsizeloss};
\end{axis}
\end{tikzpicture}
Antwort3
Sie können das gleiche erreichen wie inAboAmmars Antwortauch in PDFLaTeX, mit dem Paketxintexprdie Zahlen mit beliebiger Ziffernanzahl verarbeiten kann.
\documentclass{standalone}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{compat=1.12}
%\usepackage{siunitx}% seems not needed in this mwe
\usepackage{xintexpr}
\begin{document}
\pgfplotstableread
{
x y
0 2.42130785530195E-02
113.8 2.42130783443945E-02
227.6 2.42130781357695E-02
341.3 2.42130779271445E-02
455.1 2.42130777185196E-02
568.9 2.42130775098946E-02
682.7 2.42130773012696E-02
796.4 2.42130770926447E-02
910.2 2.42130768840197E-02
1024 2.42130766753947E-02
}\Bsizeloss
\begin{tikzpicture}
\begin{axis}[xlabel={Buffer-Size (bits)},
ylabel={Loss Probability, \% ($\times 10^{10}-242130700$)},
ytick={67,73,79,85},
legend entries = {H=0.6448},
grid = major
]
\addplot+ table[y expr=\xintthefloatexpr\thisrow{y}*1E10-242130700\relax,x=x] {\Bsizeloss};
\end{axis}
\end{tikzpicture}
\end{document}
PDFLaTeX erzeugt:
Vielleicht benötigt man in allgemeineren Fällen Klammern für den Ausdruck danach y expr
(insbesondere, wenn der Ausdruck eine Funktion mit Kommas zur Trennung der Argumente verwendet).