如何调整 Plotly 条形高度并仅显示条形边缘(在子图中)?

2024-04-18

这是我第一次涉足 Plotly。与 matplotlib 和 bokeh 相比,我喜欢它的易用性。然而,我陷入了一些关于如何美化我的情节的基本问题。首先,这是下面的代码(其功能齐全,只需复制并粘贴即可!):

import plotly.express as px
from plotly.subplots import make_subplots
import plotly as py
import pandas as pd
from plotly import tools

d = {'Mkt_cd': ['Mkt1','Mkt2','Mkt3','Mkt4','Mkt5','Mkt1','Mkt2','Mkt3','Mkt4','Mkt5'],
       'Category': ['Apple','Orange','Grape','Mango','Orange','Mango','Apple','Grape','Apple','Orange'],
           'CategoryKey': ['Mkt1Apple','Mkt2Orange','Mkt3Grape','Mkt4Mango','Mkt5Orange','Mkt1Mango','Mkt2Apple','Mkt3Grape','Mkt4Apple','Mkt5Orange'],
            'Current': [15,9,20,10,20,8,10,21,18,14],
           'Goal': [50,35,21,44,20,24,14,29,28,19]
     }
dataset  = pd.DataFrame(d)

grouped = dataset.groupby('Category', as_index=False).sum()
data = grouped.to_dict(orient='list')
v_cat = grouped['Category'].tolist()
v_current = grouped['Current']
v_goal = grouped['Goal']
fig1 = px.bar(dataset, x = v_current, y = v_cat, orientation = 'h',
              color_discrete_sequence = ["#ff0000"],height=10)
fig2 = px.bar(dataset, x = v_goal, y = v_cat, orientation = 'h',height=15)

trace1 = fig1['data'][0]
trace2 = fig2['data'][0]
fig = make_subplots(rows = 1, cols = 1, shared_xaxes=True, shared_yaxes=True)
fig.add_trace(trace2, 1, 1)
fig.add_trace(trace1, 1, 1)
fig.update_layout(barmode = 'overlay')
fig.show()

Here is the Output: enter image description here

问题1:如何使v_current(红条所示)的宽度变小?如图所示,它的高度应该较小,因为这是一个水平条。我将trace1 的高度添加为10,将trace2 的高度添加为15,但它们仍然显示在相同的高度。

Question2: Is there a way to make the v_goal (shown in blue bar) only show it's right edge, instead of a filled out bar? Something like this: enter image description here

如果您注意到的话,我还在每个类别下添加了一行。有没有快速的方法来添加这个?不是破坏交易,只是奖金。我想做的其他事情是添加动画等,但那是以后的事了!

预先感谢您的回答!


Running plotly.express将返回一个plotly.graph_objs._figure.Figure目的。同样适用于plotly.graph_objects跑步go.Figure()连同,例如,go.Bar()。因此,在使用plotlyexpress构建图形后,您可以通过直接引用图形来添加线条或轨迹,例如:

fig['data'][0].width = 0.4

这正是您设置条形宽度所需要的。您可以轻松地将其与plotlyexpress结合使用:

Code 1

fig = px.bar(grouped, y='Category', x = ['Current'],
             orientation = 'h', barmode='overlay', opacity = 1,
             color_discrete_sequence = px.colors.qualitative.Plotly[1:])
fig['data'][0].width = 0.4

Plot 1

为了让条形或形状来指示目标级别,您可以使用 DerekO 描述的方法,也可以使用:

for i, g in enumerate(grouped.Goal):
    fig.add_shape(type="rect",
                    x0=g+1, y0=grouped.Category[i], x1=g, y1=grouped.Category[i],
                    line=dict(color='#636EFA', width = 28))

完整代码:

import plotly.express as px
from plotly.subplots import make_subplots
import plotly as py
import pandas as pd
from plotly import tools

d = {'Mkt_cd': ['Mkt1','Mkt2','Mkt3','Mkt4','Mkt5','Mkt1','Mkt2','Mkt3','Mkt4','Mkt5'],
       'Category': ['Apple','Orange','Grape','Mango','Orange','Mango','Apple','Grape','Apple','Orange'],
           'CategoryKey': ['Mkt1Apple','Mkt2Orange','Mkt3Grape','Mkt4Mango','Mkt5Orange','Mkt1Mango','Mkt2Apple','Mkt3Grape','Mkt4Apple','Mkt5Orange'],
            'Current': [15,9,20,10,20,8,10,21,18,14],
           'Goal': [50,35,21,44,20,24,14,29,28,19]
     }
dataset  = pd.DataFrame(d)

grouped = dataset.groupby('Category', as_index=False).sum()

fig = px.bar(grouped, y='Category', x = ['Current'],
             orientation = 'h', barmode='overlay', opacity = 1,
             color_discrete_sequence = px.colors.qualitative.Plotly[1:])

fig['data'][0].width = 0.4
fig['data'][0].marker.line.width = 0

for i, g in enumerate(grouped.Goal):
    fig.add_shape(type="rect",
                    x0=g+1, y0=grouped.Category[i], x1=g, y1=grouped.Category[i],
                    line=dict(color='#636EFA', width = 28))
f = fig.full_figure_for_development(warn=False)
fig.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调整 Plotly 条形高度并仅显示条形边缘(在子图中)? 的相关文章

  • 递归 lambda 表达式可能吗?

    我正在尝试编写一个调用自身的 lambda 表达式 但我似乎找不到任何语法 或者即使它是可能的 本质上我想将以下函数传输到以下 lambda 表达式中 我意识到这是一个愚蠢的应用程序 它只是添加 但我正在探索可以在 python 中使用 l
  • 如何在Python中流式传输和操作大数据文件

    我有一个相对较大 1 GB 的文本文件 我想通过跨类别求和来减小其大小 Geography AgeGroup Gender Race Count County1 1 M 1 12 County1 2 M 1 3 County1 2 M 2
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 用缺失的日期填充其他列 Nan Pandas DataFrame

    我实际上是从几个 Excel 文件中提取数据来监控我的每日卡路里摄入量 我设法使用列表理解来生成日期 我尝试使用合并或连接 但它不起作用 ValueError 您正在尝试合并对象和 float64 列 date list 2021 05 2
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 在 matplotlib 中的极坐标图上移动径向刻度标签

    From matplotlib 示例 http matplotlib org examples pylab examples polar demo html import numpy as np import seaborn as sbs
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • Mac OSX 10.6 上的 Python mysqldb 不工作

    我正在使用 Python 2 7 并尝试让 Django 项目在 MySQL 后端运行 我已经下载了 mysqldb 并按照此处的指南进行操作 http cd34 com blog programming python mysql pyth
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 当数据库不是 Django 模型时,是否可以使用数据库中的表?

    是否可以从应用程序数据库中的表获取查询集 该表不是应用程序中的模型 如果我有一个不是名为 cartable 的模型的表 从概念上讲 我想这样做 myqueryset cartable objects all 有没有相对简单的方法来做到这一点
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s

随机推荐

  • 在 doxygen 中使用 SVG

    我正在尝试将 SVG 添加到我的 doxygen 文档中 第一次尝试是使用 image blabla svg 这有点工作 但是 SVG 包含另一个 png 参考 并且 内部 png 未显示 这在 Chrome 上有效 但即使在 Firefo
  • .NET 通过 TLS 1.2 删除客户端证书

    您好 似乎这个问题的某种形式已经被问过一百万种不同的方式 但许多人没有答案 或者答案不适用于我 我们有一个微不足道的小型 NET 服务 可以调用目前仅支持 TLS 1 2 的第 3 方 API var requestHandler new
  • Spring错误 - springframework.web.client.HttpClientErrorException:404 Not Found

    我正在尝试使用将对象传递给另一个类Spring 我不确定我使用的术语是否正确 我对Spring 这边走 TestServicesUtils getTemplate postForLocation http serverConfig port
  • PHP语句同步或异步

    早上好 我想知道 PHP 准备语句是同步还是异步 例如 req1 UPDATE statement1 connection gt prepare req1 statement1 gt execute req2 SELECT statemen
  • 锁定一个物体

    我经常看到这样的代码此处显示 http msdn microsoft com en us library ak9w5846 aspx 即分配一个对象 然后将其用作 锁定对象 在我看来 您可以使用任何对象来实现此目的 包括事件本身作为锁定对象
  • 如何将变音符号更改为非变音符号[重复]

    这个问题在这里已经有答案了 我在 stackoverflow 上找到了如何删除变音符号的答案 但是您能否告诉我是否可以将变音符号更改为非变音符号 哦 我想到了 NET 或者其他 如果不可能的话 由于没有人费心发布代码来执行此操作 因此它是
  • Room IllegalArgumentException:int 无法转换为元素

    我在尝试编译项目时遇到此错误 错误 任务 app compileDebugJavaWithJavac 执行失败 java lang IllegalArgumentException int无法转换为元素 还有这个警告 警告 注释处理器 an
  • MariaDb 10 条件(其中 id = '1')返回与 id ='1a' 相同的结果

    我创建以 id 作为主键和 int 自动增量的表 用这个脚本 CREATE TABLE devel pos menu id INT NOT NULL AUTO INCREMENT title VARCHAR 100 NULL DEFAULT
  • 向后迭代字符串字符的好方法是什么?

    向后迭代字符串中的字符的最 Swiftian 方法是什么 即喜欢for ch in str 仅相反 我想我一定错过了一些明显的东西 因为我现在能想到的最好的办法是 for var index str endIndex index str s
  • Python docx在保持样式的同时替换段落中的字符串

    我需要帮助替换 Word 文档中的字符串 同时保留整个文档的格式 我正在使用 python docx 在阅读文档后 它适用于整个段落 因此我松散了格式 例如粗体或斜体的单词 包括要替换的文本以粗体显示 我想保持这种状态 我正在使用这段代码
  • 使用 Apache POI 检测所需的打印方向

    我正在使用 Apache POI 创建 xls 电子表格 有没有办法检测数据是否适合纵向模式或者是否必须将工作表设置为横向模式 我知道如何设置模式 但不知道如何确定数据是否适合当前的打印方向 HSSFPrintSetup printSetu
  • 追加到 txt 文件中的现有行

    我有一个程序可以将一个人的姓名及其分数存储在 python 的 txt 文件中 例如这是我当前的代码 name input Name score input Score file name student scores txt file o
  • 开始在现有代码库中进行自动化集成/单元测试

    背景 我们已经移交了一个非常大的代码库 140 万行 主要是 C 语言 该应用程序主要由 asp net 2 0 样式的 asmx Web 服务组成 用于访问 SQL Server 2008 数据库以及各种 XML 文件中的数据 没有现有的
  • .NET 4 上的 ASP.NET 导致 IE11 throw _doPostBack is undefined javascript 错误

    编辑 该站点位于 Windows Server 2003 上 因此无法升级到 NET Framework 4 5 我们的网站正在为 NET 4 上的 ASP NET 提供服务 使用 IE 11 时 自动回发停止工作 并出现错误 doPost
  • 仅在运行 Android 12 的 Pixel 设备上出现 CannotDeliverBroadcastException

    我发现 Crashlytics 发生了崩溃 但我无法重现或找到其原因 该崩溃仅发生在运行 Android 12 的 Google Pixel 设备上 并且崩溃始终发生在后台 这是来自 Crashlytics 的崩溃日志 Fatal Exce
  • 用于属性说明的 HTML5 标签

    引用 HTML5 最终规范 http www w3 org TR html5 forms html attr label for http www w3 org TR html5 forms html attr label for The
  • 如何在 OS X 上像屏幕截图选择一样绘制矩形?

    矩形如何重绘 这是在 NSWindow 上吗 还是NSScreen 我怎样才能在 OS X 原生的 API 上做到这一点 谢谢 None
  • 分发Windows C++库:如何决定是创建静态库还是动态库?

    我们一直在将 Java 和 NET API 库转换为 C 并试图找出将编译版本分发给其他开发人员以与他们的自定义应用程序一起使用的最佳方法 应该是静态库还是动态库 我们需要为 Win32 和 Win64 创建 我想每个目标操作系统都有调试版
  • 实体框架:在运行时添加属性/实体

    我想使用实体框架 但是 我还要求允许我的用户在我们的系统中定义自定义字段 我想仍然使用实体框架 而不是使用具有哈希表属性的分部类 下面是我想到的解决方案 但是它并不简单 所以我想看看是否有更好的方法 我目前的想法是拥有一个 ModelMan
  • 如何调整 Plotly 条形高度并仅显示条形边缘(在子图中)?

    这是我第一次涉足 Plotly 与 matplotlib 和 bokeh 相比 我喜欢它的易用性 然而 我陷入了一些关于如何美化我的情节的基本问题 首先 这是下面的代码 其功能齐全 只需复制并粘贴即可 import plotly expre