Altair 上的图表 concatenation/group
Graph concatenation/group on Altair
我一直在寻找文档来简化我的代码,并将我在 Altair 上的图表分组为更少的行。我正在单独创建每个图并通过串联对它们进行分组。
你们有什么建议吗?我坚持,为了简化代码。
这是我的代码:
#Lugares de ocio
retail_recretation = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('retail_and_recreation_percent_change_from_baseline:Q', title='Cambio porcentual'),
).properties(
title = "Lugares de ocio",
width = 300,
)
#Mercados y farmacias
grocery_pharmacy = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('grocery_and_pharmacy_percent_change_from_baseline:Q', title='Cambio porcentual'),
).properties(
title = "Mercados y farmacias",
width = 300
)
#Parques y playas
parks = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('parks_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Parques y playas",
width = 300
)
#Transporte público
transit = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('transit_stations_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Transporte público",
width = 300
)
#Lugares de trabajo
workplaces = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('workplaces_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Lugares de trabajo",
width = 300
)
#Residenciales
residential = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('residential_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Residenciales",
width = 300
)
#Concat
par1 = retail_recretation | grocery_pharmacy | parks
par2 = transit | workplaces | residential
#Concat2
mobility_colima = par1 & par2
这是输出:
您可以使用 fold transform 然后进行分面编码。
import numpy as np
import pandas as pd
import altair as alt
rand = np.random.RandomState(0)
data = pd.DataFrame({
'date': pd.date_range('2019-01-01', freq='D', periods=30),
'A': rand.randn(30).cumsum(),
'B': rand.randn(30).cumsum(),
'C': rand.randn(30).cumsum(),
'D': rand.randn(30).cumsum(),
})
alt.Chart(data).transform_fold(
['A', 'B', 'C', 'D'],
).mark_line().encode(
x='date:T',
y='value:Q',
facet=alt.Facet('key:N', columns=2)
)
我一直在寻找文档来简化我的代码,并将我在 Altair 上的图表分组为更少的行。我正在单独创建每个图并通过串联对它们进行分组。
你们有什么建议吗?我坚持,为了简化代码。
这是我的代码:
#Lugares de ocio
retail_recretation = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('retail_and_recreation_percent_change_from_baseline:Q', title='Cambio porcentual'),
).properties(
title = "Lugares de ocio",
width = 300,
)
#Mercados y farmacias
grocery_pharmacy = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('grocery_and_pharmacy_percent_change_from_baseline:Q', title='Cambio porcentual'),
).properties(
title = "Mercados y farmacias",
width = 300
)
#Parques y playas
parks = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('parks_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Parques y playas",
width = 300
)
#Transporte público
transit = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('transit_stations_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Transporte público",
width = 300
)
#Lugares de trabajo
workplaces = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('workplaces_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Lugares de trabajo",
width = 300
)
#Residenciales
residential = alt.Chart(sub_df).mark_line(color="green", size=1).encode(
alt.X('date:T', title = " "),
alt.Y('residential_percent_change_from_baseline:Q', title='Cambio porcentual')
).properties(
title = "Residenciales",
width = 300
)
#Concat
par1 = retail_recretation | grocery_pharmacy | parks
par2 = transit | workplaces | residential
#Concat2
mobility_colima = par1 & par2
这是输出:
您可以使用 fold transform 然后进行分面编码。
import numpy as np
import pandas as pd
import altair as alt
rand = np.random.RandomState(0)
data = pd.DataFrame({
'date': pd.date_range('2019-01-01', freq='D', periods=30),
'A': rand.randn(30).cumsum(),
'B': rand.randn(30).cumsum(),
'C': rand.randn(30).cumsum(),
'D': rand.randn(30).cumsum(),
})
alt.Chart(data).transform_fold(
['A', 'B', 'C', 'D'],
).mark_line().encode(
x='date:T',
y='value:Q',
facet=alt.Facet('key:N', columns=2)
)