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

2023-12-22

我想要创造的图片 https://i.stack.imgur.com/VZ0K3.png

我得到了图表的左侧(前三分之一),并尝试创建“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',
        axis=None),
    y=alt.Y(
        'Name:N',
         axis=alt.Axis(tickCount=5, title=''),
         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',
    baseline='middle',
    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 https://stackoverflow.com/questions/64364794/altair-facet-mark-bar-chart,但不幸的是该问题已被用户删除。

这是我的回应:


Altair 画廊有一些多面条形图的示例(例如this one https://altair-viz.github.io/gallery/grouped_bar_chart_with_error_bars.html)对于您想要的图表,您可以继续faceting https://altair-viz.github.io/user_guide/compound_charts.html#faceted-charts a 图层图 https://altair-viz.github.io/user_guide/compound_charts.html#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.14, 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', title=None, sort=categories)
).configure_view(
    stroke='transparent'
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何创建像 Altair 这样并排的条形图? 的相关文章

随机推荐

  • 如何更改 Material UI 工具栏的高度?

    我是 React 和 Material UI 的新手 我正在努力解决组件占用多少垂直空间的问题 我想做的一件事是降低工具栏的高度 我尝试过指定样式
  • 无法找到使用 jwcrypto 在 python 中解密 JWE 令牌(但在 ASP.Net 中创建)的方法

    使用 ASP Net 加密后 我在 python 中解密 JWE 令牌时遇到困难 这是我的 C 代码 假密码 var signingKey new SymmetricSecurityKey Encoding UTF8 GetBytes ae
  • 使用 pandas 编写单个 CSV 标头

    我将数据解析为列表 并使用 pandas 构建并写入 CSV 文件 首先我的数据被放入一个集合中inv name and date都是包含大量条目的列表 然后我用concat将我解析的数据集的每次迭代连接到 CSV 文件 如下所示 coun
  • jquery ajax 和 google chrome 的问题

    我使用 jQuery 在用户离开页面时显示确认消息 如下所示 var changes false window onunload function if changes post check php undovideokey VID els
  • 将哈希模式添加到seaborn条形图中[重复]

    这个问题在这里已经有答案了 我有一个使用seaborn 创建的条形图 例如 可以按如下方式创建绘图 import pandas as pd import numpy as np import matplotlib pyplot as plt
  • Azure DevOps Pipelines,作业如何知道它是从计划触发的?

    我有一个 Azure DevOps 系统已启动并正在运行 并具有根据 PR 以及夜间计划运行管道的触发器 如下所示 trigger batch true branches include main release pre release s
  • 无法部署 - 错误:您的应用程序版本不能超过 500 个

    部署到 EB 时出现以下错误 错误 您的应用程序版本不能超过 500 个 任何一个 删除某些应用程序版本或请求增加限制 我手动删除了一些版本 我不希望部署因为这个限制而失败 Elastic Beanstalk 是否有办法自动驱逐未使用的版本
  • iOS 嵌套视图控制器视图位于 UIViewController 的视图内?

    在 iOS 中 在 UIViewController 的视图中嵌套视图控制器的视图通常是不好的编程习惯吗 举例来说 我想要某种可以响应用户触摸的交互元素 但只占据屏幕的 25 我想我会将此嵌套视图控制器添加到我的 UIViewControl
  • Yii 2 嵌套形式

    首先抱歉我的英语不好 我正在使用Yii2 dynamicforms 扩展 https github com wbraganca yii2 dynamicform到 Yii 2 中的嵌套表单 下列的本指南 https github com w
  • 如何正确实现自定义迭代器和const_iterators?

    我有一个自定义容器类 我想为其编写iterator and const iterator类 我以前从未这样做过 也未能找到合适的操作方法 关于迭代器创建的准则是什么 我应该注意什么 我还想避免代码重复 我觉得const iterator a
  • Javascript 检测文本区域中的滚动条

    我想知道是否有人知道我将如何检测滚动条何时出现在textarea 我目前在 JavaScript 中使用 mootools 但在让它检测滚动条时遇到问题 function has scrollbar elem id const elem d
  • 带动画的RemoveFromSuperView() - AnimationWillEnd不会触发

    我有一个 UIView 并尝试使用动画 淡入 alpha 0 0 将其从其超级视图中删除 工作正常 但视图永远不会从超级视图中删除 尽管我向 AnimationWillEnd 添加了委托 这是代码 控制台输出不会被写入 视图也不会被删除 怎
  • Swing 应用程序在哪里使用?

    现在人们真的使用 Swing 应用程序吗 我没有找到使用它们的地方 是否可以跳过 AWT 和 Swing 包 不过我学到了一些基础知识 如果您专门为网络编写内容 您可能可以跳过 Swing 但否则您绝对会遇到它 我从来没有开发过没有 Swi
  • 将 Switch 小部件添加到 ActionBar 并响应更改事件

    我可以知道如何在 ActionBar 中添加 Switch 小部件并处理单击事件或切换更改事件吗 现在我可以膨胀 ActionBar 中的 Switch 但无法响应更改事件 我已将以下内容添加到 main xml 中 menu menu
  • express.Router 和 app.get 之间的区别?

    我从 NodeJS 和 Express 4 开始 我有点困惑 我正在阅读 Express 网站 但看不到when使用路由处理程序或何时使用express Router 正如我所看到的 如果我想在用户点击时显示页面或其他内容 show例如我应
  • 在 Excel VBA 中添加到数组函数

    我正在尝试在 for 循环中将一个数组添加到 Double 数组的数组中 这是我的代码 Sub Test3 Dim a As Double i As Integer ReDim a 1 To 10 1 To 3 Dim d For i 1
  • Android Studio 3.0:无法解决模块依赖关系

    我有一个主要项目和第二个项目 模块 我导入后module项目作为模块依赖项app项目并尝试同步所有内容 我收到以下错误 Unable to resolve dependency for app debug compileClasspath
  • 迅速。如何将文本行追加到 file.txt 顶部?

    我正在实现一个小型记录器 在其中写入 TXT 文件 我希望最后一个事件位于文件顶部 但我无法使其正常工作 互联网上的所有示例都使用 fileHandle seekToEndOfFile 在文件末尾写入 这就是我所拥有的 private st
  • 将多个值从 MVC3 视图传递到 ActionMethod

    我想知道是否有人可以帮助我 我很抱歉听起来像个笨蛋 但我是 MVC3 的新手 我试图将 2 个值从视图传递到操作方法 但这并不公平 HTML Html ActionLink ASSIGN AssignTokenToDataTemplate
  • 我如何创建像 Altair 这样并排的条形图?

    我想要创造的图片 https i stack imgur com VZ0K3 png 我得到了图表的左侧 前三分之一 并尝试创建 bars2 和 text2 字段 但这不起作用 并将其添加到原始的ranked movies字段中 但这一切都