具有不重复颜色和笔划的多系列图表
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')),
)
我有一个包含三列的 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')),
)