我有一个编码颜色、大小和形状的点图。就其本身而言,所有三种编码都折叠为一个图例。然而,对共享相同颜色的折线图进行分层会导致下面出现重复的图例。将尺寸和形状标记为独立而将颜色标记为共享时没有区别。当我禁用折线图颜色编码中的图例时,[顶部]颜色图例和所有颜色信息都会消失。我能做什么?
rand = np.random.RandomState(0)
data = pd.DataFrame\
( rand.randint(100,500,(15,2))
, index=[*["a"]*5,*["b"]*5,*["c"]*5]
, columns=["x","y"]
).rename_axis("k").reset_index()
chart1 =\
( alt.Chart(data)
. mark_point()
. encode(x="x",y="y",color="k",shape="k",size="k")
)
chart2 =\
( alt.Chart(data)
. transform_regression
( on="x"
, regression="y"
, groupby=["k"]
, method="poly"
)
. mark_line()
. encode(x="x",y="y",color="k")
)
chart =\
( (chart1 + chart2)
. interactive()
. properties(width="container")
)
最佳答案
我认为这个问题没有什么好的答案。有一个关于它的悬而未决的问题 here .
一种解决方法是隐藏线条图例并将其他图例设置为独立:
import numpy as np
import pandas as pd
import altair as alt
rand = np.random.RandomState(0)
data = pd.DataFrame\
( rand.randint(100,500,(15,2))
, index=[*["a"]*5,*["b"]*5,*["c"]*5]
, columns=["x","y"]
).rename_axis("k").reset_index()
chart1 =\
( alt.Chart(data)
. mark_point()
. encode(x="x",y="y",color="k",shape="k",size="k")
)
chart2 =\
( alt.Chart(data)
. transform_regression
( on="x"
, regression="y"
, groupby=["k"]
, method="poly"
)
. mark_line()
. encode(x="x",y="y",color=alt.Color("k", legend=None))
)
chart =\
( (chart1 + chart2)
. interactive()
).resolve_scale(color='independent', shape='independent', size='independent')
关于Altair:合并图层图表中的图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70386504/