Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I would like to center the plot in the following code. How can I do that without changing the dimensions of the page for the parts containing text ?

I must keep the dimensions of the plot as it without scaling the plot.

\documentclass[a4,12pt]{article}
    \usepackage[utf8x]{inputenc}
    \usepackage{tikz}
    \usepackage{pgf,tikz}
    \usetikzlibrary{arrows}

\begin{document}

\begin{center}
    \definecolor{cqcqcq}{rgb}{0.75,0.75,0.75}
    \begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=2.0cm,y=2.0cm]
    \draw [color=cqcqcq,dash pattern=on 4pt off 4pt, xstep=2.0cm,ystep=2.0cm] (-3.39,-4.23) grid (5.49,4.35);
    \draw[->,color=black] (-3.39,0) -- (5.49,0);
    \foreach \x in {-3,-2,-1,1,2,3,4,5}
    \draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
    \draw[->,color=black] (0,-4.23) -- (0,4.35);
    \foreach \y in {-4,-3,-2,-1,1,2,3,4}
    \draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
    \draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$};
    \clip(-3.39,-4.23) rectangle (5.49,4.35);
    \end{tikzpicture}
\end{center}

\end{document}
share|improve this question
add comment

2 Answers

up vote 7 down vote accepted

Although you can use one of the packages offering adjustwidth, what I normally do is to actually just use \hspace*{<dim>} and to "eye" the correction. This way you sort of optically correcting for the way the page looks. You can also calculate it if you wish, but what I normally find out when you print it, fully centered images that are wider than the \textwidth, need some optical correction.

\documentclass[a4,12pt]{article}
    \usepackage[utf8x]{inputenc}
    \usepackage{tikz}
    \usepackage{pgf,tikz}
    \usetikzlibrary{arrows}
\usepackage{lipsum}
\begin{document}
\lipsum[1]

\hspace*{-2.7cm}
    \definecolor{cqcqcq}{rgb}{0.75,0.75,0.75}
    \begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=2.0cm,y=2.0cm]
    \draw [color=cqcqcq,dash pattern=on 4pt off 4pt, xstep=2.0cm,ystep=2.0cm] (-3.39,-4.23) grid (5.49,4.35);
    \draw[->,color=black] (-3.39,0) -- (5.49,0);
    \foreach \x in {-3,-2,-1,1,2,3,4,5}
    \draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
    \draw[->,color=black] (0,-4.23) -- (0,4.35);
    \foreach \y in {-4,-3,-2,-1,1,2,3,4}
    \draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
    \draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$};
    \clip(-3.39,-4.23) rectangle (5.49,4.35);
    \end{tikzpicture}

\lipsum[1]

\end{document}
share|improve this answer
    
Thanks for this. It could be interesting to have one solution which does the calculation automatically from the iwdth of the plot. –  projetmbc Jan 30 '12 at 22:04
    
@projetmbc They are not difficult to do, but its better to place the graph in a box and then measure its width (there are quite a few posts around for this). The paper width is given by \paperwidth and the equation is very simple to calculate with eTeX. If it was a picture or photograph I would push to the edge of the paper rather than center it. –  Yiannis Lazarides Jan 30 '12 at 22:15
    
I'll see this later. –  projetmbc Jan 30 '12 at 22:50
add comment

You can temporarily change the size of a section of the page using the adjustwidth environment from the changepage package

\begin{adjustwidth}{2cm}{}
  ....
\end{adjustwidth}

On another note, you may like to look at the pgfplots package, which does all the work your example does a lot more simply- I've translated your code in the following

\documentclass{article}

\usepackage{pgfplots}

% grid style
\pgfplotsset{grid style={dashed,gray}}

\begin{document}

\begin{center}
        \begin{tikzpicture}
            \begin{axis}[
                xmin=-3,xmax=4,ymin=-4,ymax=4,
                    axis x line=middle,
                    axis y line=middle,
                width=\textwidth,
                grid=major              
            ]
            \end{axis}
            \end{tikzpicture}
\end{center}

\end{document}

If you plan to have a lot of these types of plots, it's almost certainly setting a global style, something like

\pgfplotsset{every axis/.append style={
                    axis x line=middle,
                    axis y line=middle,
                    axis line style={<->},
                    line width=1pt}}
share|improve this answer
    
adjustwidth doesn't work... Thanks for the simpler code. The code I use is automatically produced by GeoGebra. –  projetmbc Jan 30 '12 at 22:02
    
@projetmbc You're welcome- GeoGebra has its strengths, but producing elegant LaTeX code is not one of them :) –  cmhughes Jan 30 '12 at 22:33
    
You're right and I'm a slacker... :-) –  projetmbc Jan 30 '12 at 22:49
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.