hvPlot.line#

hvPlot.line(x=None, y=None, **kwds)[source]#

The line plot connects the points with a continuous curve.

Reference: https://hvplot.holoviz.org/ref/api/manual/hvplot.hvPlot.line.html

Plotting options: https://hvplot.holoviz.org/ref/plotting_options/index.html

Parameters:
xstring, optional

Field name(s) to draw x-positions from. If not specified, the index is used. Can refer to continuous and categorical data.

ystring or list, optional

Field name(s) to draw y-positions from. If not specified, all numerical fields are used.

bystring, optional

A single column or list of columns to group by. All the subgroups are visualized.

groupby: string, list, optional

A single field or list of fields to group and filter by. Adds one or more widgets to select the subgroup(s) to visualize.

colorstr or array-like, optional.

The color for each of the series. Possible values are:

A single color string referred to by name, RGB or RGBA code, for instance ‘red’ or ‘#a98d19.

A sequence of color strings referred to by name, RGB or RGBA code, which will be used for each series recursively. For instance [‘green’,’yellow’] each field’s line will be filled in green or yellow, alternatively. If there is only a single series to be plotted, then only the first color from the color list will be used.

**kwdsoptional

Additional keywords arguments are documented in Plotting Options. Run hvplot.help('line') for the full method documentation.

Returns:
holoviews.element.Curve / Panel object

You can print the object to study its composition and run:

import holoviews as hv
hv.help(the_holoviews_object)

to learn more about its parameters and options.

References

Backend-specific styling options#

alpha, color, hover_alpha, hover_color, hover_line_alpha, hover_line_cap, hover_line_color, hover_line_dash, hover_line_dash_offset, hover_line_join, hover_line_width, line_alpha, line_cap, line_color, line_dash, line_dash_offset, line_join, line_width, muted, muted_alpha, muted_color, muted_line_alpha, muted_line_cap, muted_line_color, muted_line_dash, muted_line_dash_offset, muted_line_join, muted_line_width, nonselection_alpha, nonselection_color, nonselection_line_alpha, nonselection_line_cap, nonselection_line_color, nonselection_line_dash, nonselection_line_dash_offset, nonselection_line_join, nonselection_line_width, selection_alpha, selection_color, selection_line_alpha, selection_line_cap, selection_line_color, selection_line_dash, selection_line_dash_offset, selection_line_join, selection_line_width, visible

alpha, c, color, linestyle, linewidth, lw, marker, ms, visible

Examples#

Basic line plot#

This example shows how to create a simple line plot.

import hvplot.pandas  # noqa
import pandas as pd

df = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 1, 4, 9]})

df.hvplot.line(x="x", y="y")

Multiple line plot#

This dataset consists of a date column and 6 different stocks columns. In this example we only set x, hvPlot infers it should attempt to display all the remaining columns as lines. Alternatively, we could explicitly set y to the list of columns.

import hvplot.pandas  # noqa

df = hvplot.sampledata.stocks("pandas")

df.hvplot.line(x="date", group_label="Stocks")

Grouping by categories#

To distinguish categories visually, you can use the by option. This automatically colors lines based on the specified column, returning a HoloViews NdOverlay.

Note

The color cannot be used to vectorize coloring each individual line.

import hvplot.pandas  # noqa

df = hvplot.sampledata.stocks("pandas").set_index("date").melt(ignore_index=False, var_name="stock")
print(df.head(2))

df.hvplot.line(by="stock")
            stock    value
date                      
2019-01-01  Apple  1.00000
2019-01-08  Apple  1.01399

Line plot with markers#

The Bokeh plotting backend doesn’t offer options to style the markers of a line glyph. So we simply overlay a scatter plot. Visit the scatter reference to find how to customize the marker style.

import hvplot.pandas  # noqa
import pandas as pd

df = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 1, 4, 9]})

df.hvplot.line(x="x", y="y") *\
df.hvplot.scatter(x="x", y="y", marker="*", s=100, padding=0.1)

The Matplotlib plotting backend offers some simple ways to directly style line markers.

import hvplot.pandas  # noqa
import pandas as pd
hvplot.extension("matplotlib")

df = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 1, 4, 9]})

df.hvplot.line(x="x", y="y", marker="*", ms=10, padding=0.1)

Line dash#

The Bokeh plotting backend accepts these values for the line_dash keyword:

  • One of 'solid', 'dashed', 'dotted', 'dotdash', 'dashdot'.

  • A dash pattern (following the HTML5 Canvas dash specification) as a tuple of integers, which specify the lengths of dashes and gaps in a stroked line.

import hvplot.pandas  # noqa
import pandas as pd

df = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 1, 4, 9]})

plot_opts = dict(x="x", y="y", width=300, height=200)
(
    df.hvplot.line(line_dash="dashed", title="dashed", **plot_opts) +
    df.hvplot.line(line_dash="dotted", title="dotted", **plot_opts) +
    df.hvplot.line(line_dash="dotdash", title="dotdash", **plot_opts) +
    df.hvplot.line(line_dash="dashdot", title="dashdot", **plot_opts) +
    df.hvplot.line(line_dash=(20, 10), title="Dash pattern (20, 10)", **plot_opts) +
    df.hvplot.line(line_dash=(20, 10, 5), title="Dash pattern (20, 10, 5)", **plot_opts)
).cols(2)

The Matplotlib backend accepts these values for the linestyle keyword:

  • One of '-'/'solid', '--'/'dashed', '-.'/'dashdot', ':'/'dotted'

  • A dash tuple (offset, (on_off_seq)). For example, (0, (3, 10, 1, 15)) means (3pt line, 10pt space, 1pt line, 15pt space) with no offset, while (5, (10, 3)), means (10pt line, 3pt space), but skip the first 5pt line.

Find more information about Matplotlib linestyles in its documentation.

import hvplot.pandas  # noqa
import pandas as pd
hvplot.extension("matplotlib")

df = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 1, 4, 9]})

plot_opts = dict(x="x", y="y", width=300, height=200)
(
    df.hvplot.line(linestyle="dashed", title="dashed", **plot_opts) +
    df.hvplot.line(linestyle="dotted", title="dotted", **plot_opts) +
    df.hvplot.line(linestyle="dashdot", title="dashdot", **plot_opts) +
    df.hvplot.line(linestyle=(0, (1, 10)), title="dash tuple (0, (1, 10))", **plot_opts)
).cols(2)

Set the line width#

The line width can be controlled with the line_width keyword for the Bokeh plotting backend and the linewidth keyword for the Maplotlib plotting backend.

import hvplot.pandas  # noqa
import pandas as pd

df = pd.DataFrame({"x": [0, 1, 2, 3], "y": [0, 1, 4, 9]})

df.hvplot.line(x="x", y="x", line_width=10)

Xarray example#

We plot the evolution of the air temperature at a specific lat/lon location.

import hvplot.xarray  # noqa

ds = hvplot.sampledata.air_temperature("xarray").sel(lon=285.,lat=40.)

ds.hvplot.line(y="air")
This web page was generated from a Jupyter notebook and not all interactivity will work on this website.