FacetGrid 图例为空

2024-02-16

我正在尝试创建一个seaborn FacetGrid来显示我拥有的一些数据中集群之间的转换概率。该数据有一堆主题和 4 个集群(因此每个主题有 16 个数据点,每对新旧集群一个)。因为这些是概率,所以具有相同旧集群(对于每个主题)的所有值总和为 1。我想使用 FacetGrid 点图(或堆叠条形图,但这对于 seaborn 来说似乎不可能)显示此数据,例如每个旧簇都是一个单独的列,新簇是一个单独的色调,每个方面都显示主题与概率。

下面是生成具有与我的功能相同的玩具 DataFrame 的代码,以及我想要制作的facetgrid 的代码。然而,当我完成这一切时,传说却是空的。

df,index = [],0
for subj in [1,2]:
    for i,j in itertools.product(range(4),range(4)):
        df.append(pd.DataFrame(index=[index],data=dict(subject=subj,old=i,new=j,prob=[.23,.24,.26,.27][j])))
        index+=1
df = pd.concat(df)
g = sns.FacetGrid(df,col='old',hue='new',margin_titles=False,legend_out=True)
g.map(sns.pointplot,'subject','prob',join=False)
g.add_legend()

看着g._legend_data显示它是空的并且每个轴get_legend_handles_labels()函数不返回任何内容。这是怎么回事?

我无法发布我的剧情图片,因为我没有 10 点声誉;传说的名字出现在最右边,但里面什么也没有……

EDIT:此外,我想稍微回避这些值,但是g.map(sns.pointplot,'subject','prob',join=False,dodge=.1)对于各种不同的闪避值,看起来与上面完全相同......

EDIT 2:所以看来使用sns.factorplot,而不是 FacetGrid,图例和闪避都起作用。我唯一不能使用 sns.factorplot 做的事情是旋转 xtick 标签,但这不适用于col_wrap无论如何,在 Facet Grid 中...为什么 FacetGrid 会出现这个问题?


正如你所注意到的,factorplot提供了更容易使用的界面pointplot and FacetGrid一起。图例和闪避不能按照您原来的方式工作的原因是设置hue in FacetGrid并将其设置为pointplot是不同的。你打电话时pointplot没有hue变量,它不知道如何躲避,并且它认为不需要添加任何图例数据。

选项一是移动到您使用的位置hue多变的:

g = sns.FacetGrid(df,col='old', col_wrap=2)
g.map(sns.pointplot, 'subject', 'prob', 'new', dodge=.1, join=False)
g.add_legend()

但我想不出任何使用的理由FacetGrid这种方式而不是仅仅使用factorplot:

g = sns.factorplot(x="subject", y="prob", hue="new", data=df,
               col="old", col_wrap=2, size=3,
               dodge=.1, join=False)

所以剩下的唯一问题是旋转 x 轴刻度标签。factorplot返回一个FacetGrid实例,所以原则上应该很容易进一步使用FacetGrid调整情节的方法。我怀疑你遇到的问题是this bug https://github.com/mwaskom/seaborn/issues/464,这将在下一版本中修复。与此同时,您可以像这样解决它:

g = sns.factorplot(x="subject", y="prob", hue="new", data=df,
                   col="old", col_wrap=2, size=3,
                   dodge=.1, join=False)
for ax in g.axes:
    plt.setp(ax.get_xticklabels(), rotation=45)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FacetGrid 图例为空 的相关文章

  • 如何在 plt.show() 之后保持脚本运行[重复]

    这个问题在这里已经有答案了 之后plt show 我只想继续 但需要关闭弹出图 我该怎么做才能跳过该操作 这是我的代码 plt show time sleep 1 plt close all 其他代码 还有一个关于如何最大化数字制作的问题p
  • matplotlib:在次要标签下绘制主要刻度标签

    这看起来应该很容易 但我不知道该怎么做 我有一个 X 轴上有时间的图 我想设置两组刻度 小刻度显示一天中的小时 大刻度显示日 月 所以我这样做 set date ticks to something sensible xax ax get
  • seaborn 箱线图的子图

    我有一个像这样的数据框 import seaborn as sns import pandas as pd pylab inline df pd DataFrame a one one two two one two one one one
  • Python:按条件绘制多个正/负条形图

    这是我第一次用 python 绘制条形图 我的 df 操作 key descript score 0 noodles taste 5 1 noodles color 2 2 noodles health 3 3 apple color 7
  • 根据两个预先计算的直方图报告两个样本的 K-S 统计量

    Problem 在这里 我绘制了存储在文本文件中的 2 个数据集 在列表中 dataset 每个包含 218 亿个数据点 这使得数据太大而无法作为数组保存在内存中 我仍然能够将它们绘制为直方图 但我不确定如何通过2 样本KS测试 http
  • 尽管 Matplotlib FuncAnimation(...,repeat=False) 保存的动画图不断循环

    我想使用制作动画matplotlib进行 Powerpoint 演示 动画应该只播放一次 在我的代码中 参数repeat of FuncAnimation 被设置为 false 因为我需要将图导入到powerpoint中 所以我使用保存它a
  • Jupyter 笔记本中未显示绘图

    我正在尝试为 Anscombe 数据集创建 2x2 图 加载数据集并分离数据集中的每个类 import seaborn as sns import matplotlib pyplot as plt anscombe sns load dat
  • 从字典中绘制直方图

    我创建了一个dictionary计算 a 中出现的次数list每个键的内容 我现在想绘制其内容的直方图 这是我想要绘制的字典的内容 1 27 34 1 3 72 4 62 5 33 6 36 7 20 8 12 9 9 10 6 11 5
  • 无法将matplotlib安装到pycharm

    我最近开始使用Python速成课程学习Python编程 我陷入困境 因为我无法让 matplotlib 在 pycharm 中工作 我已经安装了pip 我已经通过命令提示符使用 pip 安装了 matplotlib 现在 当我打开 pych
  • Python matplotlib:将轴标签/图例从粗体更改为常规粗细

    我正在尝试制作一些出版质量的图 但遇到了一个小问题 默认情况下 matplotlib 轴标签和图例条目的权重似乎比轴刻度线重 是否有办法强制轴标签 图例条目与刻度线的重量相同 import matplotlib pyplot as plt
  • 删除流图(matplotlib)而不清除图形

    到目前为止我总是在这里找到帮助 我长期以来一直在寻找问题的解决方案 现在我可能已经失明了 我希望你能帮助我解决这个问题 我已经构建了一个 python 程序 可以绘制方向场 颤动 或流图 由于图表中可能还有其他数据 例如轨迹 我不能只是清除
  • 使用 matplotlib 散布条件颜色

    我有以下 Pandas Dataframe 其中 a 列代表虚拟变量 我想做的是给我的标记一个cmap jet 列值后面的颜色b 除非列中的值a等于 1 在本例中我希望它的颜色为灰色 知道我该怎么做吗 您必须标记等于 1 的值并绘制 imp
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • 如何使用 Pandas Series 绘制两个不同长度/开始日期的时间序列?

    我正在绘制 每周总事件 的几个熊猫系列对象 系列中的数据events per week看起来像这样 Datetime 1995 10 09 45 1995 10 16 63 1995 10 23 83 1995 10 30 91 1995
  • 如何调整 matplotlib 单选按钮的大小和纵横比?

    我已经尝试了几个小时来使简单的单选按钮列表的大小和纵横比正确 但没有成功 首先 导入模块 import matplotlib pyplot as plt from matplotlib widgets import RadioButtons
  • 将自定义误差线添加到 seaborn regplot 和 residplot

    有没有一种方法可以将自定义错误栏添加到seaborn regplot和residplot中 就像使用yerr对matplotlib错误栏所做的那样 例子在这里 如果我只是添加 yrr 参数就会发生错误 import seaborn as s
  • 如何调整 Seaborn 箱线图中胡须的大小?

    我想在下面的箱线图中使须线更宽 import pandas as pd import numpy as np import seaborn as sns import matplotlib pyplot as plt data pd Dat
  • Matplotlib 与多处理冻结计算机

    我对 matplotlib 和多重处理有疑问 我启动第一个进程 在其中显示图像并选择一个区域 然后关闭图形 然后我启动另一个进程 在其中调用定期更新的图形函数 至此 一切正常 然后 当我尝试使用相同的图形功能启动另一个进程时 它冻结了我的整
  • Matplotlib - 可以用寄生轴制作子图吗?

    我正在尝试制作一个包含两个子图的图表 每个子图都有一个寄生轴 如文档中所示here https matplotlib org examples axes grid demo parasite axes2 html 然而 虽然我可以用单个图复
  • import matplotlib.pyplot 给出 AttributeError: 'NoneType' 对象没有属性 'is_interactive'

    我尝试在 Pycharm 控制台中导入 matplotlib pyplt import matplotlib pyplot as plt 然后作为回报我得到 Traceback most recent call last File D Pr

随机推荐

  • 将 MS Office Communicator 状态指示器添加到 JSP 中

    我想将 MS Office Communicator 状态指示器添加到我的 Java 应用程序 jsp 中 如果您的目标是 Windows 平台 最简单的方法是在客户端完成所有操作 只要客户端运行 IE Office 2003 或更高版本以
  • 当输入句子没有标点符号时使用的句子分割工具(已标准化)

    假设有一个类似 给我找一些爵士音乐并播放它 的句子 其中所有文本都已标准化并且没有标点符号 语音识别库的输出 除了连接词分割的简单方法之外 还有哪些在线 离线工具可用于进行 句子分割 Input 给我找一些爵士乐并播放 Output 给我找
  • 如何在node.js中生成PDF

    我想生成一个模块 该模块将通过将输入作为我的发票来生成 PDF 并且该 PDF 文件会自动发送给客户的邮件 ID 在第一步中 我得到了一些代码并尝试生成 PDF 该代码工作正常 我能够生成 PDF 但我无法打开该文件 对于代码 我使用此链接
  • 调试应用程序中的巨大内存泄漏

    我的应用程序刚刚泄漏了 1 5GB 内存 我想因为我没有大量可用的数据 所以我假设它泄漏了内存 但它也可能只是保留它 我目前正在使用 perfmon 收集尽可能多的信息 以尝试了解可能导致问题的原因 目前我没有太多线索 希望能从这里的人们那
  • 检查xml节点是否存在?

    我想检查给定的节点是否存在 xml文件 我尝试 string language node SelectSingleNode language null node SelectSingleNode language Value en en U
  • NetBeans + 多个 php 版本 + 没有 PEAR 的 phpUnit

    我的问题有点复杂 我在 IIS 上有多个 php 版本 每个php项目都有自己的php版本和域名 例如 www webshop loc 我正在通过NetBeans开发项目 并且我想使用TDD作为开发过程 我的问题是 如何在不安装 PEAR
  • .NET core 使用 Xunit + Autofixture + Moq 编写更好的单元测试

    在 NET Core 中进行单元测试 我使用 Xunit Moq 和 Autofixture 但即使有了它们 我发现我的单元测试变得复杂并且需要时间 也许有人可以告诉我是否有任何方法可以缩小这个测试的规模 Fact public async
  • Angular:$broadcast 和 $emit 按值或引用发送消息对象?

    给出以下代码 var msg field1 val1 field2 val2 more fields scope broadcast EventName msg 事件消费者接收到一个指向msg或副本 事件消费者接收一个指针到事件数据 例如
  • HTML 中是否还有其他有用的空白代码,例如用于半空格、全空格、全空格等的  ?

    想知道是否还有其他代码可用于 HTML 新闻通讯 我会使用单元格填充或边距 但我对 HTML CSS 很陌生 我找不到确实影响主标题行及其下方子标题的更改 作为一封电子邮件 我很犹豫是否要使用 CSS 来实现它 因为我不知道电子邮件客户端不
  • PHPMailer 安全吗

    我知道这可能不是一个简单的问题 但我正在开发几个 Web 表单 并且想要一个 PHP 库 我可以用它来发送邮件并让它自动清理数据 我正在查看 PHPMailer 它看起来设置起来非常简单 PHPMailer 是一个安全库 可用于防止我的表单
  • 在 IE 中打印 iframe

    我有一个按钮 可以将要打印的报告加载到 div 内的 不可见 iframe 中并打印该 iframe 用户按下按钮即可打印报告 包含在不同的页面上 除了打印对话框之外 无需更改页面或任何视觉干扰 它适用于 Chrome 和 Firefox
  • 如何使用php获取昨天的日期?

    我想在 php 中使用特定日期格式获取昨天的日期 格式如下 today date d m Y 15 04 2013 是否可以 如果应分别更改 请考虑月份和年份 就这样吧 date d m Y strtotime 1 days 如果月份发生变
  • 使用表单事件检测数据更改

    如果您阅读了我最近提出的其他问题 您可能会发现我不是reallyAccess 开发人员 我的大部分背景都是 VB 在那里我刻意避免绑定控件 现在我在 Access 2007 中工作 我有一个基于表 嗯 单表查询 的表单 以及一个基于一对多子
  • http.Server — 获取 URL 片段

    提取片段数据没有运气 foo in http domain com path foo http domain com path foo 与标准http Server package main import fmt net http type
  • Nodejs 数据结构在设计上是线程安全的吗?

    在node js相关的Web文档中读到它是一个单线程服务器 因此 我很困惑节点服务器中的所有数据结构是否默认都是线程安全的 我有多个回调访问全局对象 如下所示 callback1 global var key val callback2 g
  • 为什么负数对向量大小取模不会得到负数? [复制]

    这个问题在这里已经有答案了 include
  • 在 FlowRouter 中定义默认渲染模板的好方法

    当迁移到一个用 Flow Router 替换 Iron Router 的新 Meteor 项目时 我真的很怀念 Iron Router 定义全局可用的默认行为和设置的功能 我知道 Flow Router 使用 组 构造来定义默认挂钩事件 这
  • string.Join 需要采用数组而不是 IEnumerable 的原因是什么?

    正如标题所说 为什么string Join需要采用数组而不是 IEnumerable 这让我很恼火 因为当我需要从 LINQ 表达式的结果创建连接字符串时 我必须添加 ToArray 我的经验告诉我 我在这里遗漏了一些明显的东西 升级到 N
  • register_printf_specifier 的替代方案(使用 printf() 以二进制格式打印数字)

    据我所知 register printf specifier 现已弃用 我无法再使用 C99 编译器使用 register printf specifier 运行代码www onlinegdb com http www onlinegdb
  • FacetGrid 图例为空

    我正在尝试创建一个seaborn FacetGrid来显示我拥有的一些数据中集群之间的转换概率 该数据有一堆主题和 4 个集群 因此每个主题有 16 个数据点 每对新旧集群一个 因为这些是概率 所以具有相同旧集群 对于每个主题 的所有值总和