In dieser Woche erstelle ich wieder einige Diagramme mit TikZ. Die y-Achse eines Diagramms soll linear sein, aber die x-Achse soll mit einer Zahlenfolge, z. B. an = 100 * 2n-1, beschriftet werden. Was muss ich denn mit TikZ der x-Achse sagen, dass sie an jedem "Tick" immer den doppelten Wert des vorhergehenden "Ticks" setzen soll. Kann man das der x-Achse mit einer expiziten Zahlenfolge beibringen? Irgendwo habe ich gelesen, dass die Koordinaten der Kurve die "Ticks" der Achsen bestimmen. Ein Diagramm mit MS Excel kann man ziemlich schnell erstellen. |
Da mir hier, wegen der großen Zahlen, mit Ob Du Sage/SageTeX hast bzw. nutzen möchtest, musst Du entscheiden. Du kannst Dir SageTeX testweise in der SageMathCloud anschauen, am eigenen PC ist der Lauf Öffne in Overleaf
% arara: pdflatex % arara: sage % arara: pdflatex \documentclass[]{article} %\documentclass[border=5pt]{standalone} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} %\usepackage[german]{babel} \usepackage{sagetex} \usepackage{tikz} \begin{document} \begin{tikzpicture}[> = latex] \foreach \n in {1,...,14}%14 \draw[shift={(\n,0)}] (0pt,2pt) -- (0pt,-2pt) node[below=0.5em, rotate=45, xshift=-1.5em] {$\sage{100*2^(\n-1)}$}; \draw[->](0,0) -- (15,0); \end{tikzpicture} \end{document} |
Im Grunde ist das ja ein Plot mit logarithmischer x Achse und speziellen Achsenlabeln. Zusaetzlich scheinst Du gerne den log2 zu verwenden zur Skalierung. Das geht mit pgfplots beispielsweise wie folgt: Öffne in Overleaf
\documentclass{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.15} \begin{document} \begin{tikzpicture} \begin{semilogxaxis}[ scaled ticks=false, ymin=0,ymax=8000, xmin=100,xmax=819200, /pgf/number format/1000 sep={\,}, ticklabel style={ font=\footnotesize, }, tick align=outside, grid=major, xticklabel style={, /pgf/number format/fixed, rotate=45, anchor=east, }, xtick={100,200,400,800,1600,3200,6400,12800,25600,51200,102400,204800,409600,819200}, log ticks with fixed point, height=6cm,width=10cm, log basis x=2, ] \addplot table { x y 100 8000 800 6500 6400 5500 51200 2500 819200 600 }; \end{semilogxaxis} \end{tikzpicture} \end{document} Die tick labels werden hierbei zurueckgerechnet, was immer auch Rundung mit sich bringt (siehe die hohen labels). Man kann mit @cfeuersaenger Kann
(06 Feb '18, 23:21)
cis
|
Wunderbar. Danke für die Hilfe. Hier kommt meine vollständige Lösung: Öffne in Overleaf
\documentclass{standalone} \usepackage{pgfplots} \pgfplotsset{compat=newest, every extra y tick/.append style={major tick length=2pt} } \usepackage{amsmath} \begin{document} \begin{tikzpicture} \begin{semilogxaxis}[ scaled ticks=false, xtick pos=left, ytick pos=left, ymin=0, ymax=8000, xmin=100, xmax=819200, /pgf/number format/1000 sep={\,}, ticklabel style={font=\footnotesize}, tick align=outside, grid=both, grid style={dotted}, ylabel=\footnotesize{Bahngeschwindigkeit \emph{v} / m\;$\cdot{} \;\text{s}^{-1}$}, xlabel=\footnotesize{Flugh\"ohe \emph{h} / km}, xticklabel style={/pgf/number format/fixed, rotate=45, anchor=east}, xtick={100,200,400,800,1600,3200,6400,12800,25600, 51200,102400,204800,409600,819200}, x tick label style={yshift=-0.7em}, y tick label style={xshift=-0.3em}, extra y ticks = {1000,3000,5000,7000}, extra y tick labels=\empty, log ticks with fixed point, height=7cm, width=12.2cm, log basis x=2 ] \node[rotate=90] at (404.5,610) {\footnotesize{ISS}}; \node[rotate=90] at (35880,800) {\footnotesize{GEO}}; \node[rotate=90] at (384400,850) {\footnotesize{Mond}}; \addplot[smooth] coordinates { (100,7850) (200,7800) (400,7661) (800,7425) (1600,7000) (3200,6350) (6400,5500) (12800,4500) (25600,3500) (51200,2550) (102400,1825) (204800,1270) (409600,900) (819200,600) }; \end{semilogxaxis} \end{tikzpicture} \end{document} |