Plot#
- property DataFrame.plot: DataFramePlot[source]#
Create a plot namespace.
Warning
This functionality is currently considered unstable. It may be changed at any point without it being considered a breaking change.
Changed in version 1.6.0: In prior versions of Polars, HvPlot was the plotting backend. If you would like to restore the previous plotting functionality, all you need to do is add
import hvplot.polars
at the top of your script and replacedf.plot
withdf.hvplot
.Polars does not implement plotting logic itself, but instead defers to Altair:
df.plot.line(**kwargs)
is shorthand foralt.Chart(df).mark_line(tooltip=True).encode(**kwargs).interactive()
df.plot.point(**kwargs)
is shorthand foralt.Chart(df).mark_point(tooltip=True).encode(**kwargs).interactive()
(andplot.scatter
is provided as an alias)df.plot.bar(**kwargs)
is shorthand foralt.Chart(df).mark_bar(tooltip=True).encode(**kwargs).interactive()
for any other attribute
attr
,df.plot.attr(**kwargs)
is shorthand foralt.Chart(df).mark_attr(tooltip=True).encode(**kwargs).interactive()
For configuration, we suggest reading Chart Configuration. For example, you can:
Change the width/height/title with
.properties(width=500, height=350, title="My amazing plot")
.Change the x-axis label rotation with
.configure_axisX(labelAngle=30)
.Change the opacity of the points in your scatter plot with
.configure_point(opacity=.5)
.
Examples
Scatter plot:
>>> df = pl.DataFrame( ... { ... "length": [1, 4, 6], ... "width": [4, 5, 6], ... "species": ["setosa", "setosa", "versicolor"], ... } ... ) >>> df.plot.point(x="length", y="width", color="species")
Set the x-axis title by using
altair.X
:>>> import altair as alt >>> df.plot.point( ... x=alt.X("length", title="Length"), y="width", color="species" ... )
Line plot:
>>> from datetime import date >>> df = pl.DataFrame( ... { ... "date": [date(2020, 1, 2), date(2020, 1, 3), date(2020, 1, 4)] * 2, ... "price": [1, 4, 6, 1, 5, 2], ... "stock": ["a", "a", "a", "b", "b", "b"], ... } ... ) >>> df.plot.line(x="date", y="price", color="stock")
Bar plot:
>>> df = pl.DataFrame( ... { ... "day": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] * 2, ... "group": ["a"] * 7 + ["b"] * 7, ... "value": [1, 3, 2, 4, 5, 6, 1, 1, 3, 2, 4, 5, 1, 2], ... } ... ) >>> df.plot.bar( ... x="day", y="value", color="day", column="group" ... )
Or, to make a stacked version of the plot above:
>>> df.plot.bar(x="day", y="value", color="group")