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

Altair 具有非重复颜色和笔划的多系列图表,altair,Altair,我有一个由三列组成的数据框架:日期、价格和符号。 符号列有20个不同值(类别)的多行。我试图创建一个折线图,其中每个类别都是不同颜色的不同线条。x轴是日期,y轴是价格 由于“符号”列上有太多不同的值,当我尝试绘制它们时,会得到带有重复颜色的线条。我原以为我可以用strokeDash来解决这个问题,但每次重复颜色时,我都会得到相同类型的破折号,所以我无法区分它们 例如,有没有一种方法可以让我以不同的顺序使用破折号的类型,以便下次我得到相同的颜色时得到不同的破折号 alt.Chart(source)

我有一个由三列组成的数据框架:日期、价格和符号。 符号列有20个不同值(类别)的多行。我试图创建一个折线图,其中每个类别都是不同颜色的不同线条。x轴是日期,y轴是价格

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

例如,有没有一种方法可以让我以不同的顺序使用破折号的类型,以便下次我得到相同的颜色时得到不同的破折号

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

谢谢

如果您试图区分20个不同的值,那么使用具有20个不同值的色阶可能更有意义。看看支持的文档列表,
category20
似乎是一个不错的选择。下面是一个使用它的快速示例:

将熊猫作为pd导入
将numpy作为np导入
将牵牛星导入为alt
rng=np.random.RandomState(1701)
source=pd.DataFrame({
“日期”:np.tile(np.arange(10),20),
'price':rng.randn(20,10).cumsum(1.ravel(),
“符号”:np.重复(列表('ABCDEFGHIJKLMNOPQRST'),10)
})
alt.Chart(源)。标记线()。编码(
x='date',
y='price',
color=alt.color('symbol',scale=alt.scale(scheme='category20')),
)