Problemas com yticklabels

Problemas com yticklabels

Vou desenhar uma determinada função de um arquivo .txt. Gostaria de especificar/destacar um ponto dessa função na própria função por meio de um marcador e um rótulo.

Além disso, gostaria de colocar um entalhe no eixo x e um rótulo.

Você pode sugerir o código necessário para realizá-lo?

Obrigado!!!

O que se segue é o código que escrevi.

\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}

Responder1

Uma possibilidade; para este exemplo usei o seguinte arquivo simples diffecorrenti.txt:

1 2
3 -3
4 5
6 7

e suprimiu partes do código original que não eram relevantes para a questão e para a solução.

insira a descrição da imagem aqui

  1. Para o primeiro requisito, você pode usar o axis cssistema de coordenadas para colocar um \nodecom algum estilo predefinido no local desejado em um ponto do gráfico. No exemplo fiz isso de duas maneiras:

    • Usei um simples \nodeno formato de um círculo preenchido e usei a labelchave para colocar a etiqueta.
    • Usando a \nodee a pinpara adicionar o rótulo.
  2. Para o segundo requisito, você pode usar extra x ticks(e talvez também extra x tick labels) para adicionar posições e rótulos de tick adicionais ao eixo x.

O código:

\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}

informação relacionada