Taille de la police de contrôle dans les graphiques dans le latex lors de la mise à l'échelle dans les minipages / sous-fig?

StackOverflow https://stackoverflow.com/questions/2239328

  •  19-09-2019
  •  | 
  •  

Question

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 lorsque vous les utilisez dans des environnements minipages / sous-chiffres?

Existe-t-il un moyen de définir manuellement une taille de police permanente pour les graphiques PGF / TIKZ ou en latex en général afin de rendre l'invariant de dimensionnement de police à la mise à l'échelle?

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

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 qu'en dehors des minipages / sous-fig, je peux utiliser les suggestions de l'autre publication pour rendre la police grande puisque le graphique est mis à l'échelle avec la largeur de la page? Ce que j'allais rechercher dans l'exemple était la première image en soi, plus grande, puis deux smimages juste en dessous côte à côte avec leurs propres légendes sur une seule figure.

J'ai vu des balises R dans votre profil mica. Les graphiques sont générés à l'aide de TikzDevice et sont ramassés dans mon doc latex.

Je génère donc les fichiers sans l'environnement TikzPicture afin que je puisse y définir manuellement des options. Quand j'utilise le \begin{tikzpicture} \end{tikzpicture} J'obtiens l'erreur "Dimension trop grande, je ne peux pas travailler avec des tailles plus grandes que 19 pieds. Continuez et j'utiliserai la plus grande valeur possible.". J'ai besoin d'utiliser \beginpgfgraphicnamed{} .. \endpgfgraphicnamed{} Pour le faire fonctionner? Je ne sais pas 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}

J'espère que cela est utile, sur tout le fichier est d'environ 1 000 lignes, j'ai donc essayé de couper une représentation des bits uniques. S'il vous plaît laissez-moi savoir si vous avez besoin d'autre chose.

Merci beaucoup,

Geai

Était-ce utile?

La solution

Je ne sais pas exactement quel est votre objectif. Pour changer la taille de la police ou la taille du reste de l'image? Il y a plusieurs possibilités pour atteindre ces éléments:

Mon exemple de boîte avec une grande boîte de 1 cm x 1cm:

\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 que si aucune unité n'est spécifiée, il a utilisé des multiples de multiplesx 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}

Les longueurs explicites ne sont pas modifiées avec 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}

Échellez tout, même le texte (selon le PGFMANUAL, cela 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}

Même effet à l'aide de commandes latsh:

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

Modifiez la taille de la police localement, mais la taille des éléments graphiques n'est pas modifiée:

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

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

\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 local en groupe:

\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 ne sais pas si vous pouvez modifier les fichiers graph?.tex, ou sont-ils générés? Peut-être pouvez-vous transmettre des options au programme qui génère le tikzpicture environnement. Sinon, définissez simplement l'option souhaitée dans la portée souhaitée en utilisant \tikzset.

J'espère que cela pourra aider.

ÉDITER: Si les options (comme font=) sont définis localement dans le graph?.tex, alors ceux-ci sont prioritaires sur les options définies à l'extérieur. Si tel est le cas, vous ne pouvez tout simplement pas les écraser de l'extérieur. Vous devrez modifier les fichiers.

ÉDITER: Cet exemple "minimal" fonctionne pour moi (montrant une très grande "ventes nettes de 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}

Veuillez également tester si cela fonctionne pour vous. Si c'est le cas, essayez de modifier celui-ci jusqu'à ce qu'il ne fonctionne plus. Quel est le changement de rupture?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top