Skip to content

可视化

Polars DataFrame 中的数据可以使用常见的可视化库进行可视化。

我们使用鸢尾花数据集来展示绘图功能。我们读取一个CSV文件,然后绘制一列对另一列的图,并用另一列进行颜色编码。

import polars as pl

path = "docs/assets/data/iris.csv"

df = pl.read_csv(path)
print(df)
shape: (150, 5)
┌──────────────┬─────────────┬──────────────┬─────────────┬───────────┐
│ sepal_length ┆ sepal_width ┆ petal_length ┆ petal_width ┆ species   │
│ ---          ┆ ---         ┆ ---          ┆ ---         ┆ ---       │
│ f64          ┆ f64         ┆ f64          ┆ f64         ┆ str       │
╞══════════════╪═════════════╪══════════════╪═════════════╪═══════════╡
│ 5.1          ┆ 3.5         ┆ 1.4          ┆ 0.2         ┆ Setosa    │
│ 4.9          ┆ 3.0         ┆ 1.4          ┆ 0.2         ┆ Setosa    │
│ 4.7          ┆ 3.2         ┆ 1.3          ┆ 0.2         ┆ Setosa    │
│ 4.6          ┆ 3.1         ┆ 1.5          ┆ 0.2         ┆ Setosa    │
│ 5.0          ┆ 3.6         ┆ 1.4          ┆ 0.2         ┆ Setosa    │
│ …            ┆ …           ┆ …            ┆ …           ┆ …         │
│ 6.7          ┆ 3.0         ┆ 5.2          ┆ 2.3         ┆ Virginica │
│ 6.3          ┆ 2.5         ┆ 5.0          ┆ 1.9         ┆ Virginica │
│ 6.5          ┆ 3.0         ┆ 5.2          ┆ 2.0         ┆ Virginica │
│ 6.2          ┆ 3.4         ┆ 5.4          ┆ 2.3         ┆ Virginica │
│ 5.9          ┆ 3.0         ┆ 5.1          ┆ 1.8         ┆ Virginica │
└──────────────┴─────────────┴──────────────┴─────────────┴───────────┘

使用Altair进行内置绘图

Polars 有一个 plot 方法,可以使用 Altair 创建图表:

chart =  (
    df.plot.point(
        x="sepal_width",
        y="sepal_length",
        color="species",
    )
    .properties(width=500, title="Irises")
    .configure_scale(zero=False)
    .configure_axisX(tickMinStep=1)
)
chart.encoding.x.title = "Sepal Width"
chart.encoding.y.title = "Sepal Length"
chart

这是以下内容的简写:

import altair as alt

(
    alt.Chart(df).mark_point(tooltip=True).encode(
        x="sepal_length",
        y="sepal_width",
        color="species",
    )
    .properties(width=500)
    .configure_scale(zero=False)
)

并且仅为了方便提供,以及表明已知Altair与Polars配合良好。

对于配置,我们建议阅读 图表配置。 例如,您可以:

  • 使用 .properties(width=500, height=350, title="My amazing plot") 更改宽度/高度/标题。
  • 使用 .configure_axisX(labelAngle=30) 更改 x 轴标签的旋转角度。
  • 使用.configure_point(opacity=.5)更改散点图中点的透明度。

hvPlot

如果你导入hvplot.polars,那么它会注册一个hvplot方法,你可以使用它来创建交互式图表,使用hvPlot

import hvplot.polars
df.hvplot.scatter(
    x="sepal_width",
    y="sepal_length",
    by="species",
    width=650,
    title="Irises",
    xlabel='Sepal Width',
    ylabel='Sepal Length',
)
hvplot_scatter

Matplotlib

要创建散点图,我们可以将DataFrame的列直接作为Series传递给Matplotlib。Matplotlib没有对Polars对象的显式支持,但可以通过将其转换为NumPy数组来接受Polars Series(对于没有空值的数值数据,这是零拷贝的)。

请注意,由于列'species'不是数值型的,我们需要首先将其转换为数值,以便它可以作为参数传递给c

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(
    x=df["sepal_width"],
    y=df["sepal_length"],
    c=df["species"].cast(pl.Categorical).to_physical(),
)
ax.set_title('Irises')
ax.set_xlabel('Sepal Width')
ax.set_ylabel('Sepal Length')

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlE1JREFUeJzs3Xd4VMXax/Hf7qY3QkIqJQm9hN6kS1FQwYqK2LtYjvVYjvVYjvVYjvVYjqKioqKioqKCoCAd6b2X0EIS0nuyO+8fC5ssCQkkm2yS/X2uay/Y2dnZJ5vN3jPzzDMOY4wRAAAAbMNZ0gUAAAAgvxEAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAYDMEQAAAABshAAIAANgMARAAAMBmCIAAAAA2QwAEAACwGQIgAACAzRAAAQAAbIYACAAAY

Seaborn 和 Plotly

SeabornPlotly 可以通过利用 数据框交换协议 来接受 Polars 的 DataFrame,该协议在可能的情况下提供零拷贝转换。请注意,该协议不支持所有 Polars 数据类型(例如 List),因此在此处您的体验可能会有所不同。

Seaborn

import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
sns.scatterplot(
    df,
    x="sepal_width",
    y="sepal_length",
    hue="species",
    ax=ax,
)
ax.set_title('Irises')
ax.set_xlabel('Sepal Width')
ax.set_ylabel('Sepal Length')

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAniZJREFUeJzs3Xd8k+X6xvHnSdK9F6Wl7L1kKQqyFQc4cBw9x4V7H9fPvVCPW1y4cB8VxYV7gYqKbJQ9y2jL6N4jz++P0kDpSJq0T5Lr/Xr1lTZPk9xJ2lzX89z3fVvGGIOIiIiIhAxboAsQERERkYalACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIiIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIiIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqAIiIiIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoIiIiEiIUQAUERERCTEKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCTEKACKiIiIhBgFQBEREZEQowAoIiIiEmIUAEVERERCjAKgiIiISIhRABQREREJMQqAIiIiIiFGAVBEREQkxCgAioiIiIQYBUARERGREKMAKCIiIhJiFABFREREQowCoAiIiEiI+eyzz7Asi+zs7ECXEjAKgCIiIiIhRgFQREREJMQoAIqIiIiEGAVAERERkRCjACgiIiISYhQARUREREKMAqCIiIhIiFEAFBEREQkxCoAiIiIiIUYBUERERCT

Plotly

import plotly.express as px

px.scatter(
    df,
    x="sepal_width",
    y="sepal_length",
    color="species",
    width=650,
    title="Irises",
    labels={'sepal_width': 'Sepal Width', 'sepal_length': 'Sepal Length'}
)