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. gefragt 06 Feb '18, 20:58 Delorian |
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} beantwortet 06 Feb '18, 22:04 cis |
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 beantwortet 06 Feb '18, 22:40 cfeuersaenger @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} beantwortet 12 Feb '18, 11:12 Delorian |