# Line Plots¶

class sage.plot.line.Line(xdata, ydata, options)

Primitive class that initializes the line graphics type.

EXAMPLES:

sage: from sage.plot.line import Line
sage: Line([1,2,7], [1,5,-1], {})
Line defined by 3 points

plot3d(z=0, **kwds)

Plots a 2D line in 3D, with default height zero.

EXAMPLES:

sage: E = EllipticCurve('37a').plot(thickness=5).plot3d()
sage: F = EllipticCurve('37a').plot(thickness=5).plot3d(z=2)
sage: E + F  # long time (5s on sage.math, 2012)

sage.plot.line.line(points, **kwds)

Returns either a 2-dimensional or 3-dimensional line depending on value of points.

INPUT:

• points - either a single point (as a tuple), a list of points, a single complex number, or a list of complex numbers.

For information regarding additional arguments, see either line2d? or line3d?.

EXAMPLES:

sage: line([(0,0), (1,1)])

sage: line([(0,0,1), (1,1,1)])

sage.plot.line.line2d(points, legend_color=None, rgbcolor=(0, 0, 1), thickness=1, aspect_ratio='automatic', alpha=1, legend_label=None, **options)

Create the line through the given list of points.

INPUT:

• points - either a single point (as a tuple), a list of points, a single complex number, or a list of complex numbers.

Type line2d.options for a dictionary of the default options for lines. You can change this to change the defaults for all future lines. Use line2d.reset() to reset to the default options.

INPUT:

• alpha – How transparent the line is
• thickness – How thick the line is
• rgbcolor – The color as an RGB tuple
• hue – The color given as a hue
• legend_color – The color of the text in the legend
• legend_label – the label for this item in the legend

Any MATPLOTLIB line option may also be passed in. E.g.,

• linestyle - (default: “-”) The style of the line, which is one of
• "-" or "solid"
• "--" or "dashed"
• "-." or "dash dot"
• ":" or "dotted"
• "None" or " " or "" (nothing)

The linestyle can also be prefixed with a drawing style (e.g., "steps--")

• "default" (connect the points with straight lines)
• "steps" or "steps-pre" (step function; horizontal line is to the left of point)
• "steps-mid" (step function; points are in the middle of horizontal lines)
• "steps-post" (step function; horizontal line is to the right of point)
• marker - The style of the markers, which is one of
• "None" or " " or "" (nothing) – default
• "," (pixel), "." (point)
• "_" (horizontal line), "|" (vertical line)
• "o" (circle), "p" (pentagon), "s" (square), "x" (x), "+" (plus), "*" (star)
• "D" (diamond), "d" (thin diamond)
• "H" (hexagon), "h" (alternative hexagon)
• "<" (triangle left), ">" (triangle right), "^" (triangle up), "v" (triangle down)
• "1" (tri down), "2" (tri up), "3" (tri left), "4" (tri right)
• 0 (tick left), 1 (tick right), 2 (tick up), 3 (tick down)
• 4 (caret left), 5 (caret right), 6 (caret up), 7 (caret down)
• "$...$" (math TeX string)
• markersize – the size of the marker in points

• markeredgecolor – the color of the marker edge

• markerfacecolor – the color of the marker face

• markeredgewidth – the size of the marker edge in points

EXAMPLES:

A line with no points or one point:

sage: line([])      #returns an empty plot
sage: import numpy; line(numpy.array([]))
sage: line([(1,1)])


A line with numpy arrays:

sage: line(numpy.array([[1,2], [3,4]]))


A line with a legend:

sage: line([(0,0),(1,1)], legend_label='line')


Lines with different colors in the legend text:

sage: p1 = line([(0,0),(1,1)], legend_label='line')
sage: p2 = line([(1,1),(2,4)], legend_label='squared', legend_color='red')
sage: p1 + p2


Extra options will get passed on to show(), as long as they are valid:

sage: line([(0,1), (3,4)], figsize=[10, 2])
sage: line([(0,1), (3,4)]).show(figsize=[10, 2]) # These are equivalent


We can also use a logarithmic scale if the data will support it:

sage: line([(1,2),(2,4),(3,4),(4,8),(4.5,32)],scale='loglog',base=2)


Many more examples below!

A blue conchoid of Nicomedes:

sage: L = [[1+5*cos(pi/2+pi*i/100), tan(pi/2+pi*i/100)*(1+5*cos(pi/2+pi*i/100))] for i in range(1,100)]
sage: line(L, rgbcolor=(1/4,1/8,3/4))


A line with 2 complex points:

sage: i = CC.0
sage: line([1+i, 2+3*i])


A blue hypotrochoid (3 leaves):

sage: n = 4; h = 3; b = 2
sage: L = [[n*cos(pi*i/100)+h*cos((n/b)*pi*i/100),n*sin(pi*i/100)-h*sin((n/b)*pi*i/100)] for i in range(200)]
sage: line(L, rgbcolor=(1/4,1/4,3/4))


A blue hypotrochoid (4 leaves):

sage: n = 6; h = 5; b = 2
sage: L = [[n*cos(pi*i/100)+h*cos((n/b)*pi*i/100),n*sin(pi*i/100)-h*sin((n/b)*pi*i/100)] for i in range(200)]
sage: line(L, rgbcolor=(1/4,1/4,3/4))


A red limacon of Pascal:

sage: L = [[sin(pi*i/100)+sin(pi*i/50),-(1+cos(pi*i/100)+cos(pi*i/50))] for i in range(-100,101)]
sage: line(L, rgbcolor=(1,1/4,1/2))


A light green trisectrix of Maclaurin:

sage: L = [[2*(1-4*cos(-pi/2+pi*i/100)^2),10*tan(-pi/2+pi*i/100)*(1-4*cos(-pi/2+pi*i/100)^2)] for i in range(1,100)]
sage: line(L, rgbcolor=(1/4,1,1/8))


A green lemniscate of Bernoulli:

sage: cosines = [cos(-pi/2+pi*i/100) for i in range(201)]
sage: v = [(1/c, tan(-pi/2+pi*i/100)) for i,c in enumerate(cosines) if c != 0]
sage: L = [(a/(a^2+b^2), b/(a^2+b^2)) for a,b in v]
sage: line(L, rgbcolor=(1/4,3/4,1/8))


A red plot of the Jacobi elliptic function $$\text{sn}(x,2)$$, $$-3 < x < 3$$:

sage: L = [(i/100.0, jacobi('sn', i/100.0 ,2.0)) for i in range(-300,300,30)]
sage: line(L, rgbcolor=(3/4,1/4,1/8))


A red plot of $$J$$-Bessel function $$J_2(x)$$, $$0 < x < 10$$:

sage: L = [(i/10.0, bessel_J(2,i/10.0)) for i in range(100)]
sage: line(L, rgbcolor=(3/4,1/4,5/8))


A purple plot of the Riemann zeta function $$\zeta(1/2 + it)$$, $$0 < t < 30$$:

sage: i = CDF.gen()
sage: v = [zeta(0.5 + n/10 * i) for n in range(300)]
sage: L = [(z.real(), z.imag()) for z in v]
sage: line(L, rgbcolor=(3/4,1/2,5/8))


A purple plot of the Hasse-Weil $$L$$-function $$L(E, 1 + it)$$, $$-1 < t < 10$$:

sage: E = EllipticCurve('37a')
sage: vals = E.lseries().values_along_line(1-I, 1+10*I, 100) # critical line
***   Warning:...new stack size = ...
sage: L = [(z[1].real(), z[1].imag()) for z in vals]
sage: line(L, rgbcolor=(3/4,1/2,5/8))


A red, blue, and green “cool cat”:

sage: G = plot(-cos(x), -2, 2, thickness=5, rgbcolor=(0.5,1,0.5))
sage: P = polygon([[1,2], [5,6], [5,0]], rgbcolor=(1,0,0))
sage: Q = polygon([(-x,y) for x,y in P[0]], rgbcolor=(0,0,1))
sage: G + P + Q   # show the plot


TESTS:

Check that trac ticket #13690 is fixed. The legend label should have circles as markers.:

sage: line(enumerate(range(2)), marker='o', legend_label='circle')


Graph Plotting

#### Next topic

Step function plots