python - Altair:不对轴进行排序

标签 python bar-chart altair

下面是一些简单的示例代码,展示了我要解决的问题:

import pandas as pd
import altair as alt

categoryNames    = [ 'a', 'f', 'r', 'u', 'p' ]
categories       = pd.Series( categoryNames )
categories.index = categoryNames

amountsRaw       = [ 50, -100, 75, 100, -500 ]
amounts          = pd.Series( amountsRaw )
amounts.index    = categoryNames

df = pd.DataFrame( { "Amounts" : amounts, "Categories" : categories } )

alt.Chart( df ).mark_bar().encode(
    x='Categories',
    y='Amounts',
    color = alt.condition( alt.datum.Amounts > 0, alt.value( 'green' ), alt.value( 'red' ) )
)

这将生成一个条形图,但我不想对 x 轴类别进行排序。它们需要以与在 categoryNames 数组中相同的顺序出现。我该怎么做?

最佳答案

您可以将列表传递给alt.X 编码的sort 属性来控制类别的顺序。例如:

alt.Chart(df).mark_bar().encode(
    x=alt.X('Categories', sort=categoryNames),
    y='Amounts',
    color=alt.condition(alt.datum.Amounts > 0, alt.value('green'), alt.value('red'))
)

enter image description here

关于python - Altair:不对轴进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51073352/

相关文章:

python - 了解mark_line点叠加和图例之间的交互

javascript - Python/R 中的网页抓取 javascript

python - Python 中的 fizzbuzz 使用随机,它是如何工作的?

python - 如何添加以 : ('name' , 形式给出的元组列表给出的数字(数字)

jqplot - 如何使用Jqplot在同一堆叠的条形图中显示两组不同颜色的条形图

r - 如何在 ggplot2 中分组条形图列上放置标签

python-3.x - Altair 为交互式散点图 jar 添加日期 slider

python - Pandas - 在数据框中的列中展开嵌套的 json 数组

r - 条形图中的美学错误(ggplot,R)

python - Altair 默认调色板颜色(十六进制)