Gere apenas a figura, não a página inteira para a imagem tikz

Gere apenas a figura, não a página inteira para a imagem tikz

Gostaria de produzir apenas o gráfico e não a página ao redor. Essencialmente, eu gostaria de uma caixa branca ao redor do gráfico, mas não no valor de uma página inteira.

eu encontreiesta resposta, e consigo compilar o MWE da resposta de Peter Grill. Entendo que devo alterar \documentclass para autônomo; No entanto, não posso fazer a resposta funcionar para o meu exemplo. Produz um PDF em branco (não uma página em branco, apenas nada). Esta é uma versão modificada doeste exemplo de um MLP, para ter duas camadas ocultas em vez de apenas uma:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\def\layersep{2.5cm}
\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep,transform canvas={scale=1.5}]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=green!50];
    \tikzstyle{output neuron}=[neuron, fill=red!50];
    \tikzstyle{hidden neuron}=[neuron, fill=blue!50];
    \tikzstyle{hidden2 neuron}=[neuron, fill=blue!50];
    \tikzstyle{annot} = [text width=4em, text centered]

% Draw the input layer nodes
    \foreach \name / \y in {1,...,4}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
        \node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};

% Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden neuron] (H-\name) at (\layersep,-\y cm) {};

 % Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden2 neuron] (H2-\name) at (\layersep*2,-\y cm) {};

% Draw the output layer nodes
      \foreach \name / \y in {1,...,3}
        \path[yshift=0.5cm]
            node[output neuron,pin=right:Class \#\y] (O-\name) at (\layersep*3,-\y cm) {};

% Connect every node in the input layer with every node in the
% hidden layer.
    \foreach \source in {1,...,4}
        \foreach \dest in {1,...,5}
            \path (I-\source) edge (H-\dest);

 % Connect every node in the first hidden layer with every node in the
% second hidden layer.
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,5}
            \path (H-\source) edge (H2-\dest);

% Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,3}
            \path (H2-\source) edge (O-\dest);

% Annotate the layers
    \node[annot,above of=H-1, node distance=1cm] (hl) {Hidden layer 1};
    \node[annot,above of=H2-1, node distance=1cm] (hl) {Hidden layer 2};
    \node[annot,right of=hl] {Output layer};
\end{tikzpicture}
\end{document}

Isso produz uma página com a imagem. Quero uma página do tamanho da foto. Como eu posso fazer isso?

Responder1

Existem duas possibilidades aqui, ou mudar para a classe autônoma, que não funciona por algum motivo, testarei amanhã. Ou certifique-se de que não haja cabeçalhos ou rodapés, também conhecido como adicionar

\pagestyle{empty} 

Para o preâmbulo e recompilar. Em seguida, em um terminal, prompt do DOS ou o que seu sistema fornecer, execute o pdf resultante através do pdfcrop

pdfcrop file.pdf

Isso cria uma versão recortada do arquivo com o nomefile-crop.pdf


Editar: depois de testar o código com a standaloneclasse, o código funciona se o seguinte for removido

transform canvas={scale=1.5}

Responder2

Na 25.4 Canvas Transformationsdocumentação TikZ:

As transformações de tela devem ser usadas com muito cuidado. Na maioria das circunstâncias, você não deseja que a largura das linhas mude em uma imagem, pois isso cria inconsistência visual.

Tão importante quanto, quando você usa transformações de tela, o pgf perde o controle das posições dos nós e dos tamanhos das imagens, uma vez que não leva em consideração o efeito das transformações da tela quando calcula as coordenadas dos nós (no entanto, não confie nisso; pode mudança no futuro).

Finalmente, observe que uma transformação de tela sempre se aplica a um caminho como um todo; não é possível (como para transformações de coordenadas) usar diferentes transformações em diferentes partes de um caminho.

Resumindo, você não deve usar transformações de canvas a menos que realmente saiba o que está fazendo.

Você leu pgf loses track ... of picture sizes? Este é o problema que aparece quando articleé alterado por standalone. Como transform canvas={scale=1.5}foi aplicado tikzpicture(não apenas a um determinado valor path), standalonenão é possível calcular o tamanho correto da figura porque pgfnão o sabe.

Assim que transform canvas={scale=1.5}for comentado, standalonerecorta a figura:

\documentclass[border=2mm]{standalone} %<--- standalone
\usepackage{tikz}

\begin{document}

\def\layersep{2.5cm}
\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep,
    %transform canvas={scale=1.5} <----- Comment out
]
    \tikzstyle{every pin edge}=[<-,shorten <=1pt]
    \tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
    \tikzstyle{input neuron}=[neuron, fill=green!50];
    \tikzstyle{output neuron}=[neuron, fill=red!50];
    \tikzstyle{hidden neuron}=[neuron, fill=blue!50];
    \tikzstyle{hidden2 neuron}=[neuron, fill=blue!50];
    \tikzstyle{annot} = [text width=4em, text centered]

% Draw the input layer nodes
    \foreach \name / \y in {1,...,4}
    % This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
        \node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};

% Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden neuron] (H-\name) at (\layersep,-\y cm) {};

 % Draw the hidden layer nodes
    \foreach \name / \y in {1,...,5}
        \path[yshift=0.5cm]
            node[hidden2 neuron] (H2-\name) at (\layersep*2,-\y cm) {};

% Draw the output layer nodes
      \foreach \name / \y in {1,...,3}
        \path[yshift=0.5cm]
            node[output neuron,pin=right:Class \#\y] (O-\name) at (\layersep*3,-\y cm) {};

% Connect every node in the input layer with every node in the
% hidden layer.
    \foreach \source in {1,...,4}
        \foreach \dest in {1,...,5}
            \path (I-\source) edge (H-\dest);

 % Connect every node in the first hidden layer with every node in the
% second hidden layer.
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,5}
            \path (H-\source) edge (H2-\dest);

% Connect every node in the hidden layer with the output layer
    \foreach \source in {1,...,5}
        \foreach \dest in {1,...,3}
            \path (H2-\source) edge (O-\dest);

% Annotate the layers
    \node[annot,above of=H-1, node distance=1cm] (hl) {Hidden layer 1};
    \node[annot,above of=H2-1, node distance=1cm] (hl) {Hidden layer 2};
    \node[annot,right of=hl] {Output layer};
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Embora o resultado não seja scaled, entendo que é possível fazer algo como

\includegraphics[scale=1.5]{...}

para obter resultados equivalentes a transform canvas={scale=1.5}.

informação relacionada