17

I am new to TikZ and/or PGF (whatever the difference is :/), as you can see. Anyway, I need to draw the graph of the equation x^(2/3) + y^(2/3) = a^(2/3), where a = 2.
Any suggestions? Here is what I have so far.

\documentclass{article}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
Some text goes here.
\begin{center}
\begin{tikzpicture}[>=latex']
    % Draw x-axis
    \draw[very thick,->] (-3,0) -- (3.5,0)
            node[right] {$x$}; 
    % Draw y-axis
    \draw[very thick, ->] (0,-3) -- (0,3.5) 
        node[above] {$y$};
    % Draw graph of equation
        \draw[smooth, color=blue, domain=-3:3, ultra thick, line cap=butt, samples=400]
            plot (\x,{ (2^{2/3} - (\x)^{2/3} )^{3/2} });
\end{tikzpicture}
\end{center}
\end{document}
0

3 Answers 3

18

While tikz can do basic graphs, it is more of drawing package than a graphing package. For graphs, I would recommend you use the pgfplots package, which internally uses tikz to do the actual drawing. To use pgfplots you invoke the axis environment.

The following graph in blue is the function you had in your MWE:

enter image description here

Based on the math explained in ガベージコレクタ's solution, I have parmaterically graphed the solution to the original equation:

enter image description here

Notes:

  • Using pgfmathdeclarefunction isn't required, but makes it easier to read.
  • This solution in the MWE has a discontinuity at 0, so if you use unbounded coords=discard, you will see messages of the sort:

    coordinate (2Y7.559544e-3],3Y0.0e0]) has been dropped because it is unbounded (in y)

    These go away if you use unbounded coords=jump.

  • There have been a few cases where I needed to rewrite the expressions such as this as

    \pgfmathdeclarefunction{Function}{1}{%
        \pgfmathparse{exp((3/2)*ln( 2^(2/3) - exp((1/3)*ln(#1)) ))}}
    

    but it does not appear to be necessary in this case.

    Thought I would point it out in case you run into problems with other similar expressions.

  • Also, it should be noted that pgf trigonometric functions expect the parameter to be in degrees, hence the use of the deg() function in the parametric graph.

References:

Code:

\documentclass{article}

\usepackage{pgfplots}% This uses tikz
\pgfplotsset{compat=newest}% use newest version

\newcommand*{\A}{2}
\pgfmathdeclarefunction{Function}{1}{% as per original MWE
  \pgfmathparse{(2^(\A) - (#1)^(1/3) )^(3/2)}%
}

\pgfmathdeclarefunction{SolutionX}{1}{%
    \pgfmathparse{\A*(cos(deg(\t)))^3}%
}

\pgfmathdeclarefunction{SolutionY}{1}{%
    \pgfmathparse{\A*(sin(deg(\t)))^3}%
}

\tikzset{My Line Style/.style={smooth, ultra thick, samples=400}}

\begin{document}
\begin{tikzpicture}
\begin{axis}[unbounded coords=discard]
    \addplot[My Line Style, color=blue, domain=0:3] (\x,{Function(\x)});
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[axis lines=middle, xmin=-2.5, xmax = 2.5, ymin=-2.5, ymax = 2.5]
    \addplot[My Line Style, color=red,  variable=\t, domain=-2*pi:0] 
        ({SolutionX(\t)},{SolutionY(\t)});
\end{axis}
\end{tikzpicture}
\end{document}
6
  • +1: could you add some explanation about the difference between TikZ and pgf as the OP seems a little unsure :)
    – cmhughes
    Sep 29, 2012 at 2:53
  • @cmhughes: Ok, added a brief blurb. Let me know if you think that is sufficient. Sep 29, 2012 at 3:09
  • @Peter Grill: +1. I find your answer better, because you are using pgfplots. -but as you can see in the other answer your solution is not complete. Sep 29, 2012 at 19:41
  • @Hans-PeterE.Kristiansen: Yes I see how the math portion should be corrected but I was focused on the TeX part and showing how to graph an equation, not how to solve it. But will fix the math as well soon. Sep 29, 2012 at 21:06
  • @Hans-PeterE.Kristiansen: Have up updated solution. Sep 30, 2012 at 6:02
12

enter image description here

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\psset{algebraic,plotpoints=300}

\def\a{2}
\def\x(#1){\a*cos(#1)^3}
\def\y(#1){\a*sin(#1)^3}

\begin{document}
\begin{pspicture}[showgrid=true](-2,-2)(2,2)
    \psparametricplot[linecolor=red]{0}{\psPiTwo}{\x(t)|\y(t)}
\end{pspicture}
\end{document}

With PSTricks the solution is as follows,

enter image description here

Animated version:

enter image description here

\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\psset{algebraic,plotpoints=300}
\usepackage[nomessages]{fp}
\FPeval\Delta{round(2*pi/30:2)}

\def\a{2}
\def\x(#1){\a*cos(#1)^3}
\def\y(#1){\a*sin(#1)^3}

\begin{document}
\multido{\n=0.00+\Delta}{31}{%
\begin{pspicture}[showgrid=true](-2,-2)(2,2)
    \psparametricplot[linecolor=red]{0}{\n}{\x(t)|\y(t)}
\end{pspicture}}
\end{document}

With implicit function plot:

enter image description here

\documentclass[pstricks,border=3pt]{standalone}
\usepackage{pst-func}
\begin{document}
\begin{pspicture*}(-2,-2)(2,2)
  \psplotImp[linecolor=red,stepFactor=0.05,algebraic](-2.1,-2.1)(2.1,2.1){(x^2)^(1/3)+(y^2)^(1/3)-4^(1/3)}
\end{pspicture*}
\end{document}
2
  • I am still trying to learn how to use the packages you used in your solution. I am unable to get LaTeX to reproduce your same results. I'll keep working on it though. Thanks for your answer!
    – Nathan
    Sep 30, 2012 at 20:43
  • @Nathan: use xelatex or latex-dips-ps2pdf rather than pdflatex. Sep 30, 2012 at 23:15
1

While I have been using TikZ a little bit over the last couple of years, I am brand new to pgf, per se, and tikzmath. I have a number of questions, but for now, out of simple curiosity, since Nathan was new to "tikz and/or pgf" why didn't you just tell him to use

\draw [ scale=0.5, domain=-3.142:3.142, smooth, variable=\t ]
plot ( {2*cos(\t r)^3}, {2*sin(\t r)^3} );  

or:

\begin{tikzpicture}[declare function={xx(\t) = 2*cos(\t)^3; yy(\t) = 2*sin(\t)^3;}]
    \draw [scale=0.5] plot [ domain=0:360, samples=73, smooth ] ( {xx(\x)}, {yy(\x)} ); 
1
  • Welcome, this seems to be better suited as a comment. Soon you will have enough reputation points to leave comments, for now the team will convert this.
    – Johannes_B
    Aug 17, 2015 at 19:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .