具有不重复颜色和笔划的多系列图表

multi series chart with non-repeating colors and strokes

我有一个包含三列的 Pandas 数据框:日期价格符号symbol 列有许多行,每行包含 20 个不同的值(类别)。我正在尝试创建一个折线图,其中每个类别都是不同颜色的不同线条。 x 轴是 date,y 轴是 price.

由于 symbol 列中有太多不同的值,当我尝试绘制它们时,我得到了颜色重复的线条。我以为我可以使用 strokeDash 来解决这个问题,但是在每次颜色重复时我都会得到相同类型的破折号,所以我无法区分它们。

有没有一种方法可以让我以不同的顺序重新排列破折号的类型,以便下次我得到相同的颜色时得到不同的破折号?

alt.Chart(source).mark_line().encode(
x='date',
y='price',
color='symbol',
strokeDash='symbol')

谢谢!

如果您试图区分 20 个不同的值,使用具有 20 个不同值的色标可能更有意义。查看受支持的 vega color schemes 文档列表,category20 似乎是一个不错的选择。这是一个使用它的简单示例:

import pandas as pd
import numpy as np
import altair as alt

rng = np.random.RandomState(1701)

source = pd.DataFrame({
    'date': np.tile(np.arange(10), 20),
    'price': rng.randn(20, 10).cumsum(1).ravel(),
    'symbol': np.repeat(list('ABCDEFGHIJKLMNOPQRST'), 10)
})

alt.Chart(source).mark_line().encode(
  x='date',
  y='price',
  color=alt.Color('symbol', scale=alt.Scale(scheme='category20')),
)