如何仅显示数据中存在的图例中的类别

2023-12-02

我有一个数据框如下:

enter image description here

在上面的数据框中,'Month'是一个有序的Categorical列定义为:

cats = ['January', 'February', 'March', 'April','May','June', 'July', 'August','September', 'October', 'November', 'December']
month_gr['Month'] = pd.Categorical(month_gr['Month'], cats, ordered = True)

使用 Seaborn 条形图:

ax = sns.barplot(data = month_gr, x = 'Item Name', y = 'Total', hue = 'Month')
ax.set_xticklabels(ax.get_xticklabels(), rotation= 90, ha = 'right')

Outputs: enter image description here

上面的图例显示了 12 个月的全部Categorical柱子。我只想显示图例 4 个月['June', 'July', 'August', 'September'],因为我的数据只包含这 4 个月。有没有办法动态控制图例,使其仅显示可用的Categories传递给data?


您可以创建“已用月份”列表,然后将该列表设置为hue_order。这也确保只有那些月份才会占用酒吧的空间。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

month_col = ['June'] * 5 + ['July'] * 5 + ['August'] * 5 + ['September'] * 7
month_gr = pd.DataFrame({'Month': month_col,
                         'Item Name': [*'abcdebdefgbcefgabcdefg'],
                         'Total': np.random.randint(100, 1000, len(month_col))})

cats = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
month_gr['Month'] = pd.Categorical(month_gr['Month'], cats, ordered=True)

used_months = [m for m in cats if m in month_gr['Month'].to_list()]

ax = sns.barplot(data=month_gr, x='Item Name', y='Total',
                 hue='Month', hue_order=used_months, palette=sns.color_palette("Set2"))
plt.show()

example plot

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅显示数据中存在的图例中的类别 的相关文章

随机推荐

  • 创建独立的jar文件

    我已经建立了一个jar使用 Netbeans 创建文件 它在我的系统中运行良好 但我想做jar能够在所有具有 JRE 的系统中运行的文件 即使是classpath没有在该系统中设置 package circle import java aw
  • 使用静态成员变量时出现链接器错误

    我已经在这里浏览了与静态成员变量相关的所有线程 但不幸的是这无法帮助我找出原因 这就是问题 定义一个类名dvd db 包括以下成员 数据成员 DVD 名称 私有字符数组 大小 10 价格 私有双变量 数量 私有 int 变量 一个私有静态
  • 分析是什么以及如何分析我的 Java 程序?

    我听说过很多关于剖析的事情 这是怎么回事 据我了解 这是某种绩效衡量 但有人可以更清楚地阐述这一点 以便新手能够掌握这个想法 另外 我将 Eclipse IDE 用于我的 Java 程序 我可以使用 Eclipse IDE 分析我的程序吗
  • Pandas read_csv 在解析数字时忽略美元符号

    我有一个 csv 文件 其中一些单元格带有美元符号 例如 46 5 我强迫所有类型都是numpy float64在函数中pandas read csv 它抱怨ValueError could not convert string to fl
  • 如何修复 IE7 浮动清除组合

    我有一个 field wrapper 类 div 其中包含 3 个子 div field label field input 和 field error 我需要将 field label field input 并排放置 并将 field
  • Canvas/JS:计算倾斜斜坡碰撞中物体的新速度矢量?

    好吧 我正在 JS Canvas 上开发弹球游戏 我想知道如何处理鳍状肢和球之间的碰撞 我可以让脚蹼击球 但我对如何通过不同的脚蹼位置 角度 改变球的速度方向感到困惑 以下是我可以从脚蹼和球中使用的信息 this ballPosX ball
  • Django:管理中的验证错误

    新手警报 背景 这是我第一次编写一个需要验证的模型 我不能有两个Items具有重叠的 日期范围 我一切正常 除了当我引发 forms ValidationError 时 我得到死亡黄屏 debug true 或 500 页 debug fa
  • 如何快速制作不同形状的图像视图

    我想将普通的ios图像视图更改为下面的图像形状 如弧线 您可以使用它来根据您的要求设计形状 您可以向路径添加额外的线条 以防您需要修改贝塞尔曲线路径 创建一个自定义 UIImageView 类 并将故事板中的图像视图子类化为您的自定义类 i
  • 默认最大 Java 堆大小是如何确定的?

    如果我省略 Xmxn来自 Java 命令行的选项 则将使用默认值 根据Java 文档 默认值是在运行时根据系统配置选择的 哪些系统配置设置会影响默认值 在 Windows 上 您可以使用以下命令来查找运行应用程序的系统上的默认值 java
  • 如何使用url参数自动登录网站?

    我有一个链接 如果用户点击该链接 它应该会自动登录该网站 并从该网址读取用户名和密码 因此 用户无需填写用户名字段和密码字段即可查看该站点 url 格式是否正确 如果不正确 正确的格式是什么 我认为你需要的格式是 http 用户名 电子邮件
  • 如何将 MFP 8 Beta 移动应用程序迁移到 MFP 8 GA 版本?

    情况是这样的 我构建了一个与 mfp 8 beta 进行不同集成的应用程序 该应用程序在本地开发服务器上完全运行 并且主要在 Bluemix 上运行 测试期间 该应用程序的所有基本功能均在 MFP 8 Beta 服务器 本地和 Bluemi
  • 使用 yadcf 过滤器导出为 PDF 时标题不正确

    当我尝试使用过滤器 yadcf 将数据表导出为 pdf 时 标题始终显示过滤器中的每个案例 如何隐藏它 我的 JavaScript 是 var vsan vsan DataTable lengthMenu 1 10 40 50 All 10
  • Clojure:try,catch 宏也会关闭任何文件流(不是 with-open)

    UPDATE 感谢迄今为止所有的帮助 这是我的新代码 可以运行 但并不完全如我所愿 我需要它返回java异常 不要问我为什么 例子 safe 1 0
  • 如何取消定时器并更新相同的定时器?

    我正在创建一个每 30 秒振动一次并发出蜂鸣声的应用程序 当我注销时 振动和蜂鸣声必须取消 当我登录时 振动和蜂鸣声应恢复 注意 它必须每 30 秒振动一次并发出蜂鸣声 直到我退出 在我的应用程序中我正在使用TimerTask对于这个实现
  • 当 Swift 桥接头导入导入 Hopscotch-Swift.h 本身的文件时,如何防止循环引用

    我正在将 Swift 集成到一个现有的大型 Objective C 项目中 并且遇到了我认为是循环引用的情况 有问题的类如下 Objective C 控制器 import Hopscotch Swift h interface MyCont
  • Powershell:接收函数返回的数组包含数组中每个值的增量数字[重复]

    这个问题在这里已经有答案了 我是 PowerShell 新手 有一个我无法解释的奇怪行为 我调用一个返回a的函数 System Collections ArrayList 但是当我打印接收数组内容的变量时 如果我有一个值 例如 logXXX
  • 浮点图 - 打开/关闭系列

    我成功地建立了我的流程图 基于上一篇文章 我想让查看者通过单击即可显示 隐藏该系列 我找到了很多解决方案 包括官方的和其他的 但没有一个对我有用 我会解释一下 官方开启 关闭系列 这有效 但看起来非常混乱 因为图例最终被复制了两次 一旦系列
  • 在android中接收和串联超过160个字符的短信

    我正在我的应用程序中开发一个短信接收器模块 在该模块中我正在使用我的应用程序接收短信 如果短信超过 160 个字符 那么我必须将该短信与其下一部分连接起来并显示它 目前我正在使用一个简单的接收器代码 请建议我执行此任务 是的 尝试处理多部分
  • sp1 应用到 SQL Server 2014 后,RESTORE HEADERONLY 出现错误 3013

    我最近将 SP1 应用到 SQL Server 2014 完成并除尘 没有问题 几周后 当尝试使用我的存储过程之一从网络上的 bak 文件恢复数据库之一时 抛出以下错误消息 错误 RESTORE HEADERONLY 异常终止 错误 301
  • 如何仅显示数据中存在的图例中的类别

    我有一个数据框如下 在上面的数据框中 Month 是一个有序的Categorical列定义为 cats January February March April May June July August September October