
Me gustaría mostrar solo el gráfico y no la página circundante. Básicamente, me gustaría un cuadro blanco alrededor del gráfico, pero no el valor de una página completa.
encontréesta respuesta, y puedo compilar el MWE a partir de la respuesta de Peter Grill. Entiendo que debo cambiar \documentclass a independiente; Sin embargo, no puedo hacer que la respuesta funcione para mi ejemplo. Produce un pdf en blanco (no una página en blanco, simplemente nada). Esta es una versión modificada deeste ejemplo de un MLP, para tener dos capas ocultas en lugar de solo una:
\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}
Esto produce una página con la imagen. Quiero una página del tamaño de la imagen. ¿Cómo puedo hacer eso?
Respuesta1
Aquí hay dos posibilidades: cambiar a la clase independiente, que por alguna razón no funciona y se probará mañana. O asegúrese de que no haya encabezados ni pies de página, también conocido como agregar
\pagestyle{empty}
Al preámbulo y recompilar. Luego, en una terminal, símbolo de DOS o lo que proporcione su sistema, ejecute el pdf resultante a través de pdfcrop.
pdfcrop file.pdf
Esto crea una versión recortada del archivo con el nombrefile-crop.pdf
Editar: después de probar el código con la standalone
clase, el código funciona si se elimina lo siguiente
transform canvas={scale=1.5}
Respuesta2
De 25.4 Canvas Transformations
la TikZ
documentación:
Las transformaciones del lienzo deben utilizarse con mucho cuidado. En la mayoría de los casos, no desea que cambie el ancho de las líneas en una imagen, ya que esto crea una inconsistencia visual.
Igual de importante es que cuando utiliza transformaciones de lienzo, pgf pierde la pista de las posiciones de los nodos y de los tamaños de las imágenes, ya que no tiene en cuenta el efecto de las transformaciones del lienzo cuando calcula las coordenadas de los nodos (sin embargo, no confíe en esto; puede cambio en el futuro).
Finalmente, tenga en cuenta que una transformación de lienzo siempre se aplica a un camino en su conjunto; no es posible (como para las transformaciones de coordenadas) usar diferentes transformaciones en diferentes partes de un camino.
En resumen, no deberías utilizar transformaciones de lienzo a menos que realmente sepas lo que estás haciendo.
Leíste pgf loses track ... of picture sizes
? Este es el problema que aparece cuando article
se cambia por standalone
. Como transform canvas={scale=1.5}
se ha aplicado tikzpicture
(no solo a un individuo en particular path
), standalone
no puedo calcular el tamaño correcto de la figura porque pgf
no lo sé.
Tan pronto como transform canvas={scale=1.5}
se comenta, standalone
recorta la figura nuevamente:
\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}
Aunque el resultado no lo es scaled
, entiendo que es posible hacer algo como
\includegraphics[scale=1.5]{...}
para obtener resultados equivalentes a transform canvas={scale=1.5}
.