如何制作具有跨列一致网格的分组条形图?
How do I make a grouped bar chart with a consistent grid across columns?
我正在尝试在 Altair 中制作一个分组条形图,其中的列不是很明显(可能通过删除它们之间的 space)。
问题here relies on several depreciated methods. Additionally, the desired visual grouping described there (which is what I'm looking for) was closed as a vega-lite issue. This has since been resolved中提出的解决方案。
是否有更新的方法来创建分组清晰的条形图?
这是我目前的情况:
import pandas as pd
import numpy as np
import altair as alt
vals = np.concatenate(((np.arange(10) ** 2) / 9, np.arange(10)))
df = pd.DataFrame({
'cat': np.repeat(['a', 'b'], 10),
'x': np.tile(np.arange(10), 2),
'y': vals
})
alt.Chart(df).mark_bar(width=20).encode(
x='cat',
y='y',
color='cat',
column='x'
).configure_view(strokeWidth=0)
是否可以在保持水平网格线的同时保持每组之间的space?
您可以将小平面间距与调整比例域结合起来执行如下操作:
import pandas as pd
import numpy as np
import altair as alt
vals = np.concatenate(((np.arange(10) ** 2) / 9, np.arange(10)))
df = pd.DataFrame({
'cat': np.repeat(['a', 'b'], 10),
'x': np.tile(np.arange(10), 2),
'y': vals
})
alt.Chart(df).mark_bar(width=20).encode(
x=alt.X('cat', scale=alt.Scale(domain=['', 'a', 'b'])),
y='y',
color='cat',
).facet(
'x', spacing=0
).configure_view(
strokeWidth=0
)
我正在尝试在 Altair 中制作一个分组条形图,其中的列不是很明显(可能通过删除它们之间的 space)。
问题here relies on several depreciated methods. Additionally, the desired visual grouping described there (which is what I'm looking for) was closed as a vega-lite issue. This has since been resolved中提出的解决方案。
是否有更新的方法来创建分组清晰的条形图?
这是我目前的情况:
import pandas as pd
import numpy as np
import altair as alt
vals = np.concatenate(((np.arange(10) ** 2) / 9, np.arange(10)))
df = pd.DataFrame({
'cat': np.repeat(['a', 'b'], 10),
'x': np.tile(np.arange(10), 2),
'y': vals
})
alt.Chart(df).mark_bar(width=20).encode(
x='cat',
y='y',
color='cat',
column='x'
).configure_view(strokeWidth=0)
是否可以在保持水平网格线的同时保持每组之间的space?
您可以将小平面间距与调整比例域结合起来执行如下操作:
import pandas as pd
import numpy as np
import altair as alt
vals = np.concatenate(((np.arange(10) ** 2) / 9, np.arange(10)))
df = pd.DataFrame({
'cat': np.repeat(['a', 'b'], 10),
'x': np.tile(np.arange(10), 2),
'y': vals
})
alt.Chart(df).mark_bar(width=20).encode(
x=alt.X('cat', scale=alt.Scale(domain=['', 'a', 'b'])),
y='y',
color='cat',
).facet(
'x', spacing=0
).configure_view(
strokeWidth=0
)