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 was trying to plot graph of sine functions. I found PSTricks and tried using it, but I have no idea whether there are more standard / more appropriate packages to do this.

Here is what I did (which was miserable):

\psset{unit=1cm}
\begin{center}
\begin{pspicture}(-3.5,-2)(6.5,2)
    \psaxes[dx=\pstPI4,trigLabelBase=2,trigLabels]{->}(0,0)(-3.2,-1.25)(6.5,1.25)
    \psplot[xunit=0.5cm,linecolor=red,linewidth=1.5pt,plotpoints = 100]{-\psPiTwo}{\psPiFour}{x RadToDeg sin}
\end{pspicture}
\end{center}

Would any of you mind giving me some suggestions on how to make this better? I actually don't really understand why I need to put {-\psPiTwo}{\psPiFour} in the part where it is, but I tried changing that to some other things and they do not seem to work well.

Thanks!

share|improve this question
    
I found that plotting using tikz is really easy. For examle with \draw[domain=0:7] plot (\x, {sin(\x)});. But there is also the very convenient pgfplots package, based on tikz/pgf that has even more special purpose commands for drawing plots with axis and all. –  canaaerus Jul 21 '12 at 8:43
    
@canaaerus Thanks for the package suggestion. So I tried using it and I found out that the code is way more readable. However, I need to specify all the tick marks myself were I to use pi instead of the usual integer tick marks. That part is pretty annoying, but your answer truly makes my life much easier. Thank you very much! –  P. C. Jul 21 '12 at 11:58
    
The documentation of pst-Plot has a lot of examples. –  Herbert Jul 21 '12 at 12:47
    
related axis-with-trigonometric-labels-in-pgfplots –  cmhughes Jul 21 '12 at 15:44
    
@cmhughes That post does help a lot, but as I responded, is there a way to do it in tikz/pgf such that I have the pi style labels on the axis without having to list the numbers (like 3.14159....) and listing the \frac{\pi}{2} sort of stuff. –  P. C. Jul 22 '12 at 3:22

2 Answers 2

up vote 6 down vote accepted

Here is something that should get you going.

\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
grid=both,
domain=-2*pi:2*pi,
samples=200,
no marks,
xticklabels={-2$\pi$,-1.5$\pi$,...$\pi$,2$\pi$},
xtick={-6.2832,-4.7124,...,6.2832},
x post scale=1.5
]
\addplot {2*sin(deg(x))+0.8*sin(pi*deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}

enter image description here

share|improve this answer
    
Ziz iz not PSTricks. :-) –  cyanide-based food Jul 25 '12 at 14:00
    
@HiggsBoson Look at ze deuxième comment :P –  percusse Jul 25 '12 at 14:17
    
I would just switch to pdfplots from now on. It seems easier to understand for me now. Thanks. –  P. C. Jul 29 '12 at 2:43
    
@P.C.: It is sad if you switched to TikZ because of my horrific answer. :-) Please give me time to explain it in a very easy approach. –  cyanide-based food Jul 29 '12 at 5:17

Description of the user defined constants:

enter image description here

Note that: the description diagram above uses constants to provide enough spaces for annotations. And the following example uses different constants. Don't get confused!

User defined constants:

\def\f(#1){sin(#1)}% function to plot
\def\g(#1){1.5*cos(2*#1)}% function to plot

\const{Width}{10}% total width in cm
\const{Height}{4}% total height in cm 

\const{POL}{-0.20}% pspicture left offset in cm
\const{POR}{ 0.50}% pspicture right offset in cm
\const{POB}{-0.20}% pspicture bottom offset in cm
\const{POT}{ 0.50}% pspicture top offset in cm

\const{AOL}{-0.20}% axis left offset in cm
\const{AOR}{ 0.30}% axis right offset in cm
\const{AOB}{-0.20}% axis bottom offset in cm
\const{AOT}{ 0.30}% axis top offset in cm

\const{DomL}{-2*pi}% domain left  
\const{DomR}{2*pi}% domain right  
\const{DomB}{-2}% domain bottom  
\const{DomT}{ 2}% domain top 

\const[0]{TrigLabelBase}{2}% denominator for a fraction of pi

Output and the complete code:

enter image description here

\documentclass[border=0pt,pstricks]{standalone}
\usepackage{pst-eucl,pstricks-add}
\usepackage[nomessages]{fp}
\newcommand\const[3][3]{\expandafter\FPeval\csname#2\endcsname{round(#3:#1)}}


% User defined data:
\def\f(#1){sin(#1)}% function to plot
\def\g(#1){1.5*cos(2*#1)}% function to plot

\const{Width}{10}% total width in cm
\const{Height}{4}% total height in cm 

\const{POL}{-0.20}% pspicture left offset in cm
\const{POR}{ 0.50}% pspicture right offset in cm
\const{POB}{-0.20}% pspicture bottom offset in cm
\const{POT}{ 0.50}% pspicture top offset in cm

\const{AOL}{-0.20}% axis left offset in cm
\const{AOR}{ 0.30}% axis right offset in cm
\const{AOB}{-0.20}% axis bottom offset in cm
\const{AOT}{ 0.30}% axis top offset in cm

\const{DomL}{-2*pi}% domain left  
\const{DomR}{2*pi}% domain right  
\const{DomB}{-2}% domain bottom  
\const{DomT}{ 2}% domain top 

\const[0]{TrigLabelBase}{2}% denominator for a fraction of pi

% Internal used constants:
\const{XUnit}{(Width-POR+POL-AOR+AOL)/(DomR-DomL)}
\const{YUnit}{(Height-POT+POB-AOT+AOB)/(DomT-DomB)}

\const{PicL}{(POL+AOL)/XUnit+DomL}
\const{PicR}{(POR+AOR)/XUnit+DomR}
\const{PicB}{(POB+AOB)/YUnit+DomB}
\const{PicT}{(POT+AOT)/YUnit+DomT}

\const{AxiL}{AOL/XUnit+DomL}
\const{AxiR}{AOR/XUnit+DomR}
\const{AxiB}{AOB/YUnit+DomB}
\const{AxiT}{AOT/YUnit+DomT}

\const{DeltaX}{pi/TrigLabelBase}

\psset{xunit=\XUnit,yunit=\YUnit,algebraic,plotpoints=500}

\begin{document}


\begin{pspicture}[showgrid=false](\PicL,\PicB)(\PicR,\PicT)
    \psplot[linecolor=red]{\DomL}{\DomR}{\f(x)}
    \psplot[linecolor=blue]{\DomL}{\DomR}{\g(x)}
    \psaxes
    [
        trigLabels=true,
        labelFontSize=\scriptscriptstyle,
        tickcolor=gray,
        ticksize=-1.5pt 1.5pt,
        xlabelsep=3pt,
        arrowscale=1,
        trigLabelBase=\TrigLabelBase,
        dx=\DeltaX,% must come before xunit to avoid getting a strange output!  
    ]{->}(0,0)(\AxiL,\AxiB)(\AxiR,\AxiT)[$x$,0][$y$,90]
\end{pspicture}


\end{document}
share|improve this answer
    
Forgot to remove the irrelevant package pst-eucl. –  cyanide-based food Aug 12 '12 at 19:46

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.