我对Altair库很陌生。如果要绘制的变量在pandas数据框中具有对象dtype,则在生成图形时会遇到困难。
我没有太多运气就尝试了一个条形图和一个箱形图。任何帮助深表感谢。
Barchart: 我正在尝试创建一个如下所示的图表:
我已阅读Altair文档并尝试了以下代码:
alt.Chart(psy).mark_bar().encode(x = alt.X('player.q_mother_language', title = 'Mother language'), y ='count()', color = 'player.q_mother_language')
代码提供的图形为:
箱线图 然后我决定尝试一些箱线图。
我要生成的箱线图是:
我使用的代码是:
alt.Chart(psy).mark_boxplot().encode(x = 'player.q_gender', y = 'player.q_age', color = 'player.q_gender')
我得到的结果是:
数据集如下所示:
player.q_mother_language,player.q_country,player.q_age,player.q_gender
Czech,Czech,21,Male
Serbian,Serbia,23,Female
German,Austria,26,Male
German,Austria,21,Female
Portuguese,Portugal,21
Russian,Kazakhstan,22,Female
Mongolian,Mongolia,32,Female
Ukrainian,Ukraine,19,Female
German,Austria,22,Male
谢谢您的帮助
答案 0 :(得分:0)
问题在于,列名中的特殊字符(包括句点,方括号和引号)用于指示层次结构变量。要继续处理图表,您应该重命名这些列以使其不包含特殊字符,或者在图表编码中转义这些特殊字符。
以下是后一种方法的示例:
import pandas as pd
import io
import altair as alt
data = """player.q_mother_language,player.q_country,player.q_age,player.q_gender
Czech,Czech,21,Male
Serbian,Serbia,23,Female
German,Austria,26,Male
German,Austria,21,Female
Portuguese,Portugal,21
Russian,Kazakhstan,22,Female
Mongolian,Mongolia,32,Female
Ukrainian,Ukraine,19,Female
German,Austria,22,Male
"""
psy = pd.read_csv(io.StringIO(data))
alt.Chart(psy).mark_bar().encode(
x= alt.X(r'player\.q_mother_language', type='nominal', title = 'Mother language'),
y='count()',
color=alt.Color(r'player\.q_mother_language', type='nominal')
)