我想制作一张图表,其中一条线在沿线的不同位置具有不同的颜色。
这不起作用:
import altair as alt
import numpy as np
import pandas as pd
x = np.linspace(0,1)
y = x**2
c = np.round(x*20)
df = pd.DataFrame({'x': x, 'y': y, 'c': c})
print(df.head())
alt.Chart(df).mark_line().encode(x='x', y='y', color='c')
(我想要一条连续的线,而不是一堆线段。)
据推测,问题在于 Altair(或 Vega-Lite)决定按颜色进行分组,并为每个组绘制一条单独的线。
我可以覆盖此默认分组以表示整行应该是一个组吗?
为了进行比较,在 R 的 ggplot2 库中the group论证会做我正在寻找的事情 https://www.gl-li.com/2017/08/13/ggplot2-group-overrides-default-grouping/.
这是一个基本上可以得到我正在寻找的情节的技巧:
import altair as alt
import numpy as np
import pandas as pd
x = np.linspace(0,1)
y = x**2
c = np.round(x*20)
df = pd.DataFrame({'x': x, 'y': y, 'c': c})
df_shifted = df.shift()
df_shifted['c'] = df['c']
alt.Chart(pd.concat([df, df_shifted])).mark_line().encode(x='x', y='y', color='c')
这种方法放弃告诉 Altair/Vega-Lite 我希望我的点组成一条线,而是通过使用额外的(移位的)数据副本在每对点之间创建一个单独的线段。
线段根据每个线段中的左侧点进行着色,我认为这有点误导(如果只有几个点,则非常误导)。您可以通过将颜色设为两侧的平均值来使黑客变得更复杂。
仍然希望有人能明确回答用户是否可以控制分组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)