altair无法垂直组合分面图表
创始人
2024-08-07 16:01:03
0

如果使用 Altair 绘制分面图表,并且在尝试垂直组合图表时遇到错误消息,请确认每个图表具有相同的图表规范。

以下是一个示例,其中使用facet()方法创建一个垂直可组合的分面条形图。在这个例子中,每个图表都具有相同的x、y和facet规范。

import altair as alt
from vega_datasets import data

source = data.barley()

base = alt.Chart(source).encode(
    alt.X('sum(yield):Q', axis=alt.Axis(title='Barley Yield (bushels/acre)')),
    alt.Y('variety:O', axis=alt.Axis(title=None, ticks=False, labels=False)),
)

bar = base.mark_bar().encode(
    alt.Color('year:N', legend=None),
)

text = base.mark_text(
    align='left',
    baseline='middle',
    dx=3  # Nudges text to right so it doesn't appear on top of the bar
).encode(
    text=alt.Text('sum(yield):Q', format='.1f')
)

(bar + text).facet(
    column='site:N',
    spacing={'row': 0, 'column': 20}
).properties(
    title='Barley Yields by Variety and Site',
    height=alt.Step(12)  # controls width of horizontal bars
)

如果您的图表规范不相同,则可以使用 facet_data() 方法将它们转换为相同的规范。例如:

import pandas as pd
import altair as alt
from vega_datasets import data

source = data.barley()

# Define some helper functions
def pd_dict(x):
    return pd.Series(x).to_dict()

def ungroup_facet_data(data):
    facet = data['facet'].apply(pd_dict).apply(pd.Series)
    return pd.concat([facet, data.drop(columns='facet')], axis='columns')

# Define data sources for each chart
source1 = source.groupby(['year', 'variety']).mean().reset_index()
source2 = source.groupby(['year', 'site']).mean().reset_index()

# Create each chart independently
bar = alt.Chart(source1).mark_bar().encode(
    x='sum(yield):Q',
    y=alt.Y('variety:N', title=None, axis=alt.Axis(labels=False, ticks=False, minExtent=30, domain=False)),
    color=alt.Color('year:N', title=None),
).facet(column=alt.Column('year:N'))

lines = alt.Chart(source2).mark_line(point=True, size=2).encode(
    x='year:N',
    y='sum(yield):Q',
    color=alt.Color('site:N', title=None),
).facet(column=alt.Column('variety:N'))

# Use facet_data on each chart's dataset
bar_data = bar.facet_data()
bar_data = ungroup_facet_data(bar_data)

line_data = lines.facet_data()
line_data = ungroup_facet_data(line_data)

# Recreate each chart, using the

相关内容

热门资讯

安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...
安卓系统拦截短信在哪,安卓系统... 你是不是也遇到了这种情况:手机里突然冒出了很多垃圾短信,烦不胜烦?别急,今天就来教你怎么在安卓系统里...
app安卓系统登录不了,解锁登... 最近是不是你也遇到了这样的烦恼:手机里那个心爱的APP,突然就登录不上了?别急,让我来帮你一步步排查...
安卓系统要维护多久,安卓系统维... 你有没有想过,你的安卓手机里那个陪伴你度过了无数日夜的安卓系统,它究竟要陪伴你多久呢?这个问题,估计...
windows官网系统多少钱 Windows官网系统价格一览:了解正版Windows的购买成本Windows 11官方价格解析微软...
安卓系统如何卸载app,轻松掌... 手机里的App越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么轻松卸载安卓系统里的App,让...
怎么复制照片安卓系统,操作步骤... 亲爱的手机控们,是不是有时候想把自己的手机照片分享给朋友,或者备份到电脑上呢?别急,今天就来教你怎么...
安卓系统应用怎么重装,安卓应用... 手机里的安卓应用突然罢工了,是不是让你头疼不已?别急,今天就来手把手教你如何重装安卓系统应用,让你的...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...