Ich werde eine bestimmte Funktion aus einer TXT-Datei zeichnen. Ich möchte einen Punkt dieser Funktion auf der Funktion selbst durch einen Marker und ein Label angeben/hervorheben.
Außerdem möchte ich auf der x-Achse eine Kerbe und eine Beschriftung anbringen.
Können Sie den zur Durchführung erforderlichen Code vorschlagen?
Danke schön!!!
Was folgt, ist der Code, den ich geschrieben habe.
\documentclass[a4paper, landscape, 8pt]{book}
\usepackage{etex}
\usepackage{etoolbox}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage{microtype}
\usepackage{tikz, siunitx, pgfplots, relsize, pgfmath}
\usetikzlibrary{intersections, pgfplots.units}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{units}
\begin{document}
\pgfplotsset{change x base,
x SI prefix=milli,
change y base,
y SI prefix=micro
}
\pgfplotsset{
every axis/.append style = {
font=\relsize{1},
% riguarda le tick labels
line width = 1pt,
% oppure: thin, semithick, thick,
% very thick
tick style = {line width = 1pt}
},
every axis x label/.append style = {
font = \relsize{2}
},
every axis y label/.append style = {
font = \relsize{2},
rotate = -90
%xshift = -0.7em,
%yshift = -1.4em
},
major grid style = {
line width = 0.5pt,
gray,
%dash pattern = on 4pt off 4pt
},
every axis title/.append style = {
font = \relsize{1}
},
legend style={at={(850e-3, 700e-3)},anchor=north, line width=1pt}
}
\begin{tikzpicture}
\begin{axis}
[ axis background/.style={fill=gray!15},
%axis x line=bottom,
%axis y line=left,
xmin=-0.3, xmax=0.3,
ymin=-0.000004, ymax=0.000004,
x unit=V,
%x unit prefix=m,
y unit=A,
%y unit prefix=u,
minor x tick num = 1,
minor y tick num = 1,
width=12cm, height=9cm,
grid=major,
%xtick = {-0.3,-0.2,...,0.3},
%ytick = {-0.000004,-0.000003,...,0.000004},
xlabel = {$V_d$},
ylabel=$I_{d_1}-I_{d_2}$
]
\addplot [thick, green!100] file {diffecorrenti.txt};
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Eine Möglichkeit; für dieses Beispiel habe ich die folgende einfache Datei verwendet diffecorrenti.txt
:
1 2
3 -3
4 5
6 7
und Teile des Originalcodes unterdrückt, die für die Fragestellung und die Lösung nicht relevant waren.
Für die erste Anforderung können Sie das
axis cs
Koordinatensystem verwenden, um ein Objekt\node
mit einem vordefinierten Stil an der gewünschten Stelle an einem Punkt in Ihrem Diagramm zu platzieren. Im Beispiel habe ich dies auf zwei Arten getan:- Verwenden Sie dazu einfach
\node
die Form eines ausgefüllten Kreises undlabel
platzieren Sie mit dem Schlüssel das Etikett. - Verwenden Sie a
\node
und a,pin
um das Etikett hinzuzufügen.
- Verwenden Sie dazu einfach
Für die zweite Anforderung können Sie
extra x ticks
(und möglicherweise auchextra x tick labels
) verwenden, um der X-Achse zusätzliche Teilstrichpositionen und Teilstrichbeschriftungen hinzuzufügen.
Der Code:
\documentclass{book}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\tikzset{
every pin/.style={
fill=orange!20,
font=\footnotesize
},
small dot/.style={
fill=orange!70!black,
circle,
scale=0.5,
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis background/.style={fill=gray!15},
minor x tick num = 1,
minor y tick num = 1,
width=12cm,
height=9cm,
grid=major,
xlabel = {$V_d$},
ylabel=$I_{d_1}-I_{d_2}$,
extra x ticks={1.2,4.7},
extra x tick labels={extra1,extra2},
extra x tick style={
grid=none,
font=\footnotesize\color{red},
tick label style={rotate=90}
}
]
\addplot [thick, green] file {diffecorrenti.txt};
\node[small dot,label=left:{$(4,5)$}] at (axis cs:4,5) {};
\node[small dot,pin=30:{$(3,-3)$}] at (axis cs:3,-3) {};
\end{axis}
\end{tikzpicture}
\end{document}