我将如何像 Altair 这样并排创建条形图?

如何解决我将如何像 Altair 这样并排创建条形图?

Image of What I want to create

我得到了图表的左侧(前三分之一),并尝试创建一个 'bars2' 和 'text2' 字段,但没有成功,并将其添加到原始的 ranked_movies 字段中,但这很混乱。有没有办法移动和压缩并添加一整套其他条形图?

tuples = list(zip([names[ep] for ep in episodes],topthird,middlethird))
binranking_per_df = pd.DataFrame(tuples,columns = ['Name','Top Third','Middle Third'])
#ranking_per_df


bars = alt.Chart(binranking_per_df).mark_bar(size=20).encode(
    x=alt.X(
        'Top Third',axis=None),y=alt.Y(
        'Name:N',axis=alt.Axis(tickCount=5,title=''),sort=names_l
    )
)

bars2 = alt.Chart(binranking_per_df).mark_bar(size=20).encode(
    x=alt.X(
        'Middle Third',sort=names_l
    )
)

text = bars.mark_text(
    align='left',baseline='middle',dx=3  
).encode(
    text=alt.Text('Top Third:Q',format='.0%')
)

text2 = bars.mark_text(
    align='left',dx=3  
).encode(
    text=alt.Text('Middle Third:Q',format='.0%')
)

ranked_movies = (text + bars).configure_mark(
    color='#008fd5'
).configure_view(
    strokeWidth=0
).configure_scale(
    bandPaddingInner=0.2
).properties(
    width=500,height=180
).properties(
    title="Whats the Best 'Star Wars' Movie?"
)

解决方法

此问题(关于相同图表)先前已回答 here,但不幸的是该问题已被用户删除。

这是我的回答:


Altair 画廊提供了几个分面条形图示例(例如 this one)对于您想到的图表,您可以通过 faceting 一个 Layer Chart 继续,其中包含一个条形图和一个文本层。例如:

import altair as alt
import numpy as np
import pandas as pd

titles = ['The Phantom Menace','Attack of the Clones','Revenge of the Sith','A New Hope','The Empire Strikes Back','Return of the Jedi']
categories = ['Top third','Middle third','Bottom third']
percentages = [
    [0.16,0.14,0.13,0.50,0.64,0.43],[0.37,0.29,0.40,0.31,0.22,0.41],[0.46,0.57,0.47,0.19,0.17]
]
titles,categories,percentages = map(
    np.ravel,np.broadcast_arrays(
        titles,np.array(categories)[:,None],percentages))
df = pd.DataFrame({
    'titles': titles,'categories': categories,'percentages': percentages,})

base = alt.Chart(df).encode(
    x=alt.X('percentages:Q',axis=None),y=alt.Y('titles:N',title=None,sort=titles),).properties(
    width=70
)

bars = base.mark_bar().encode(
    color=alt.Color('categories:N',legend=None)
)
text = base.mark_text(dx=15).encode(
    text=alt.Text('percentages:Q',format=".0%")
)

(bars + text).facet(
    column=alt.Column('categories:N',sort=categories)
).configure_view(
    stroke='transparent'
)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?