2010-02-10 26 views
8

J'utilise des graphiques pgf/tikz et je me demande comment on peut contrôler la mise à l'échelle des tailles de police dans les graphiques lorsqu'on les utilise dans des environnements de minipage/sous-code?Contrôler la taille de la police dans les graphiques dans LaTeX lors de la mise à l'échelle dans minipage/subfig?

Est-il possible de définir manuellement une taille de police permanente pour les graphiques PGF/tikz ou en latex, en général de manière à rendre la police de calibrage invariant à l'échelle?

Idéalement, j'aimerais pouvoir spécifier manuellement une taille de police par graphique ou pour tous les graphiques ou environnements de sous-produits/minipages?

Voici un exemple de l'utilisation comme suggéré. Merci pour l'aide.

\begin{figure}[h] 
\centering 
\subfloat[Graph 1]{ 
    \begin{minipage}[h]{0.7\linewidth} 
     \centering\beginpgfgraphicnamed{graph1} 
     \input{graph1.tex} 
     \endpgfgraphicnamed 
     \label{fig:graph1} 
    \end{minipage}} 
\hspace{5pt} 
\subfloat[Graph 2]{ 
    \begin{minipage}[h]{0.5\linewidth} 
     \centering\beginpgfgraphicnamed{graph2} 
     \input{graph2.tex} 
     \endpgfgraphicnamed 
     \label{fig:graph2} 
    \end{minipage}} 
\subfloat[Graph 3]{ 
    \begin{minipage}[h]{0.5\linewidth} 
     \centering\beginpgfgraphicnamed{graph3} 
     \input{graph3.tex} 
     \endpgfgraphicnamed 
     \label{fig:graph3} 
    \end{minipage}} 
\caption{Three Graphs} 
\end{figure} 

Peut-être en dehors de minipage/subfig je peux utiliser les suggestions de l'autre affichage pour faire la police grande depuis le graphique est mis à l'échelle de la largeur de la page? Ce que je voulais dans l'exemple était la première image sur son propre, plus grand, et puis deux petites images juste en dessous de leurs propres légendes en une seule figure.

J'ai vu quelques balises R dans votre profil Mica. Les graphiques sont générés en utilisant tikzDevice et sont repris dans mon document latex. Donc, je génère les fichiers sans l'environnement tikzpicture afin que je puisse y définir moi-même les options manuellement. Quand j'utilise le \begin{tikzpicture} \end{tikzpicture}, j'obtiens l'erreur "Dimension trop grande, je ne peux pas travailler avec des tailles supérieures à environ 19 pieds, continuez et j'utiliserai la plus grande valeur possible.". Je dois utiliser \beginpgfgraphicnamed{} .. \endpgfgraphicnamed{} pour le faire fonctionner? Je ne sais pas exactement quel est l'impact.

Voici un échantillon du fichier généré automatiquement:

\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\end{scope} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\end{scope} 

........

\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\definecolor[named]{fillColor}{rgb}{1.00,1.00,1.00} 

\draw[fill=fillColor,draw opacity=0.00,] ( 0.00, 0.00) rectangle (794.97,614.29); 
\end{scope} 

........

\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\definecolor[named]{drawColor}{rgb}{0.00,0.00,0.00} 

\node[rotate= 90.00,color=drawColor,anchor=base,inner sep=0pt, outer sep=0pt, scale= 1.00] at (15.92,310.59) {Mackenzie Net Sales}; 
\end{scope} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (794.97,614.29); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\end{scope} 

Espérons qui est utile, sur tout le fichier est ~ 1000 lignes, donc j'essayé de découper une o de représentation f les bits uniques. S'il vous plaît laissez-moi savoir si vous avez besoin d'autre chose.

Un grand merci,

Jay

+0

le code réel serait toujours utile. pourquoi évaluez-vous un dessin de tikz/pgf? pourquoi ne pas simplement le dessiner à la bonne taille? – Mica

+0

Code ajouté, merci! :) – Jay

Répondre

12

Je ne suis pas exactement sûr de ce que votre objectif est. Pour changer la taille de la police ou la taille du reste de l'image?Il existe de multiples possibilités d'atteindre l'un de ces:

Mon exemple boîte avec un 1cm x 1cm grande boîte:

\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

échelle les éléments graphiques, mais pas le texte:

\begin{tikzpicture}[scale=0.5] 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

\begin{tikzpicture}[scale=0.5] 
    \draw (0,0) rectangle (1cm,1cm) -- +(-1,-1); 
    \node(text) at (0.5cm,0.5cm) {Text}; 
\end{tikzpicture} 

échelle les coordonnées uniquement (c'est-à-dire, si aucune unité n'est spécifiée, elle utilise des multiplications du vecteur x, y et z spécifié):

\begin{tikzpicture}[x=5mm,y=5mm] 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

longueurs explicites ne sont pas modifiés par ceci:

\begin{tikzpicture}[x=5mm,y=5mm] 
    \draw (0,0) rectangle (1cm,1cm) -- +(-1cm,-1cm); 
    \node(text) at (0.5cm,0.5cm) {Text}; 
\end{tikzpicture} 

tout échelle, même le texte (selon le pgfmanual, ce n'est pas recommandé):

\begin{tikzpicture}[transform canvas={scale=0.5}] 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

effet Même en utilisant les commandes LaTeX:

\scalebox{0.5}{ 
\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 
} 

Modifier la taille de la police locale, mais la taille des éléments graphiques ne sont pas modifiés:

\begin{tikzpicture}[font=\scriptsize] 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

Modifier la taille de la police dans tous les environnements tikzpicture ultérieurs (\tikzset peut être utilisé pour définir les options ci-dessus, aussi):

\tikzset{font=\scriptsize} 
\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

\tikzset reste locale en groupes:

\begin{minipage}{\linewidth} 
\tikzset{font=\scriptsize} 
\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 
\end{minipage} 

{ 
\tikzset{font=\scriptsize} 
\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 
} 

\begin{tikzpicture} 
    \draw (0,0) rectangle (1,1) -- +(-1,-1); 
    \node(text) at (0.5,0.5) {Text}; 
\end{tikzpicture} 

Je don ne sais pas si vous pouvez modifier les fichiers graph?.tex, ou sont-ils générés? Peut-être que vous pouvez passer des options au programme qui génère l'environnement tikzpicture. Sinon, définissez simplement l'option souhaitée dans la portée souhaitée en utilisant \tikzset.

Espérons que cela aide.

EDIT: Si les options (comme font=) sont définis localement dans le graph?.tex, puis ceux-ci obtiennent la priorité sur les options définies en dehors. Si c'est le cas, vous ne pouvez pas les écraser de l'extérieur. Vous devriez éditer les fichiers.

EDIT: Cet exemple « minimal » fonctionne pour moi (montrant un très grand « Sales Net Mackenzie » qui dépasse la largeur de la sous-figure)

\documentclass{article} 

\usepackage{fix-cm} 
\usepackage{subfig} 
\usepackage{tikz} 

\begin{document} 
\tikzset{every picture/.append style={font=\fontsize{100}{120}\selectfont}} 

\begin{figure}[h] 
\centering 
\subfloat[Graph 1]{ 
    \begin{minipage}[h]{0.7\linewidth} 
     \centering\beginpgfgraphicnamed{graph1} 
%  \input{graph1.tex} 
     \endpgfgraphicnamed 
     \label{fig:graph1} 
    \end{minipage}} 
\hspace{5pt} 
\subfloat[Graph 2]{ 
    \begin{minipage}[h]{0.5\linewidth} 
     \centering 
     \resizebox{\textwidth}{!}{ 

      %\beginpgfgraphicnamed{graph2} 
\begin{tikzpicture} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\end{scope} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\end{scope} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\definecolor[named]{fillColor}{rgb}{1.00,1.00,1.00} 
\draw[fill=fillColor,draw opacity=0.00,] ( 0.00, 0.00) rectangle (79.497,61.429); 
\end{scope} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\definecolor[named]{drawColor}{rgb}{0.00,0.00,0.00} 
\node[rotate= 90.00,color=drawColor,anchor=base,inner sep=0pt, outer sep=0pt, scale= 1.00] at (1.592,31.059) {Mackenzie Net Sales}; 
\end{scope} 
\begin{scope} 
\path[clip] ( 0.00, 0.00) rectangle (79.497,61.429); 
\definecolor[named]{drawColor}{rgb}{0.13,0.76,0.43} 
\definecolor[named]{fillColor}{rgb}{0.31,0.94,0.66} 
\end{scope} 
\end{tikzpicture} 
} 
     %\endpgfgraphicnamed 

     \label{fig:graph2} 
    \end{minipage}} 
\subfloat[Graph 3]{ 
    \begin{minipage}[h]{0.5\linewidth} 
     \centering\beginpgfgraphicnamed{graph3} 
%  \input{graph3.tex} 
     \endpgfgraphicnamed 
     \label{fig:graph3} 
    \end{minipage}} 
\caption{Three Graphs} 
\end{figure} 

\end{document} 

S'il vous plaît tester si cela fonctionne pour vous, aussi. Si c'est le cas, essayez de modifier celui-ci jusqu'à ce qu'il ne fonctionne plus. Quel est le changement de rupture?

+0

Merci pour toutes les informations Meinersbur, c'est génial. Il y a quelques options qui peuvent être contrôlées comme je peux créer les fichiers de sorte que je spécifie manuellement l'environnement de tikzpicture mais cela jette une erreur "Dimension trop grande je ne peux pas travailler avec des tailles plus grandes qu'environ 19 pieds." – Jay

+0

Il serait préférable de ne pas modifier les parties internes des fichiers graphiques générés automatiquement. Il n'y a pas de "font =" dans les fichiers mais le réglage \ tikzset {font = \ scriptsize} ne semble pas avoir d'effet? – Jay

+0

Mon but est d'avoir la taille de la police 10p pour dire pour l'arugment, indépendamment de la façon dont hte tikz graphic est recalé (subfig, minipage, ...). Spécifiquement dans la configuration j'ai posté la police est plus grande dans le graphique supérieur et petit (et illisible) dans les graphiques inférieurs côte à côte ... – Jay