在 sns.lmplot() 中格式化 x 轴(日期)

2023-12-04

我需要绘制每日数据sns.lmplot().

数据具有以下结构:

df = pd.DataFrame(columns=['date', 'origin', 'group', 'value'],
                  data = [['2001-01-01', "Peter", "A", 1.0],
                          ['2011-01-01', "Peter", "A", 1.1],
                          ['2011-01-02', "Peter", "B", 1.2],
                          ['2012-01-03', "Peter", "A", 1.3],
                          ['2012-01-01', "Peter", "B", 1.4],
                          ['2013-01-02', "Peter", "A", 1.5],
                          ['2013-01-03', "Peter", "B", 1.6],
                          ['2021-01-01', "Peter", "A", 1.7]])

我现在想用以下方法绘制数据sns.lmplot()对于月平均值(我的原始数据比玩具数据更细粒度)并使用hue for group-柱子。为此,我按月汇总:

df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y%M').astype(int)
df = df.groupby(['date', 'origin', 'group']).agg(['mean'])
df.columns = ["_".join(pair) for pair in df.columns]  # reset col multi-index
df = df.reset_index()  # reset index

然后我绘制数据:

sns.lmplot(data=df, x="date", y="value", hue="group",
           ci=None, truncate=False, scatter_kws={"s": 1}, lowess=True, height=6, aspect=1.25)
plt.title(f"Title.")
plt.ylabel("Value")
plt.show()

这工作正常,但日期很乱。我希望它们显示为日期而不是ints.

我已经发现this问题,但我想要分组图,所以我不能使用 regplot,并且代码plt.xticks(fake_dates)(下列的this答案)给出TypeError: object of type 'FuncFormatter' has no len().

有人知道如何解决这个问题吗?


  • 为了将 x 轴上的值转换回日期,'date'列应转换为序数值。
  • When iterating through the axes to configure the xtick format, the labels can be configured to a custom string format with .strftime
    • new_labels = [date.fromordinal(int(label)).strftime("%b %Y") for label in labels]
  • 测试于python 3.8.12, pandas 1.3.3, matplotlib 3.4.3, seaborn 0.11.2
from datetime import date

# convert the date column to ordinal or create a new column
df['date'] = pd.to_datetime(df['date']).apply(lambda date: date.toordinal())

df = df.groupby(['date', 'origin', 'group']).agg(['mean'])
df.columns = ["_".join(pair) for pair in df.columns]  # reset col multi-index
df = df.reset_index()  # reset index

# plot
g = sns.lmplot(data=df, x="date", y="value_mean", hue="group", ci=None, truncate=False, scatter_kws={"s": 1}, lowess=True, height=6, aspect=1.5)

# iterate through the axes of the figure-level plot
for ax in g.axes.flat:
    labels = ax.get_xticks() # get x labels
    new_labels = [date.fromordinal(int(label)) for label in labels] # convert ordinal back to datetime
    ax.set_xticks(labels)
    ax.set_xticklabels(new_labels, rotation=0) # set new labels

plt.title("Title")
plt.ylabel("Value")
plt.show()

enter image description here

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

在 sns.lmplot() 中格式化 x 轴(日期) 的相关文章

随机推荐

  • 默认 HTML/CSS 链接颜色是什么?

    我需要它的代码表示 比如 FFFFFF 从 HTML5 开始 超链接的前景色等正在以以下形式实现标准化 预期默认渲染行为指南 特别是 取自该部分措辞内容 未访问和已访问的超链接的建议默认颜色如下 link color 0000EE visi
  • 在写入时读取 XML 文件(用 Python)

    我必须监视全天运行的工具正在写入的 XML 文件 但 XML 文件直到最后才正确完成并关闭 与 XML 流处理相同的约束 即时解析不完整的 XML 文件并触发操作 跟踪文件中的最后位置以避免从头开始再次处理 关于回答需要在 Python 中
  • 如何根据文件扩展名过滤 git diff?

    有没有限制的选项git diff一组给定的文件扩展名 是的 如果你确保 git 扩展一个 glob 而不是你的 shell 那么它会在任何级别匹配 所以像这样的东西 引号很重要 应该可以正常工作 git diff c h
  • 如何将报亭集成到应用程序中

    我想在我的应用程序中集成 iOS5 NEWSSTAND 的新功能 但我很困惑如何开始 有谁能够帮助我 有它的示例代码吗 任何人都可以知道如何在我们的应用程序中实现它 谢谢 创建 Apple NewsStand 应用程序的非常好的教程 htt
  • 如何选择具有相同类名的所有元素?

    我有一个布尔变量 它存储在隐藏的输入字段中 基本上 如果用户已登录 则false 如果不是 那就是true 有下载按钮将链接到文件下载 我的目标是这样 如果他们没有登录 按钮将不会显示 并且链接将不起作用 如果有一个警报说他们需要登录或其他
  • IIS7 URL 重写规则执行从 *.html 文件到 *.php 文件的 301 重定向

    我想使用 IIS7 的 URL 重写模块根据特定模式创建 301 重定向 我有一个仅包含 HTML 文件的网站 我正在将该网站转换为 PHP 文件 但保留所有相同的文件名 例如 以下网址 index html contact contact
  • 使用 ag-grid 单元格内的值和 ID 进行选择?

    我对 ag grid 很陌生 正在评估它 我的项目的数据有多个查找表 即 Foo 有 Bar 类别 Baz 品牌和 Boo 类别 我希望能够在 ag grid 中编辑它们 不幸的是 这些查找表不在我的控制范围内 而且我并不总是有连续的 ID
  • 为什么“linq to sql classes”在创建类时会更改表的名称?

    我进入并在 Visual Studio 中添加一个新的 linq to sql 类 然后将一个表从数据库资源管理器拖到新的 DBML 中 新类的名称不再是复数 如果我仍然希望它是复数怎么办 如果我拖动一个不是复数的表 我会收到一堆编译错误
  • XML 到 JSON 还是数组? PHP

    我在想 如果我可以通过 func 运行 XML 来验证它 针对模式 然后将 XML 转换为 json 以便于对象访问 那么它可能能够使用和处理 XML 数据 如何轻松地将 XML 转换为 JSON json json encode simp
  • 类型“void”上不存在属性“then”

    我应该如何处理 Typescript 错误 Property then does not exist on type void 我的代码如下所示 import Component from angular core import Socia
  • C# 一旦主线程睡眠,所有线程都停止

    我有一个类运行生产者 消费者模型 如下所示 public class SyncEvents public bool waiting public SyncEvents waiting true public class Producer p
  • hash() 随机化在密码学上是否被认为是强大的?

    从CPython 3 3 默认情况下启用哈希随机化 在以前的版本中 可以通过指定来打开它 R命令行选项或通过设置PYTHONHASHSEED环境变量 to random 引用了文档 默认情况下 hash str bytes 和 dateti
  • 如何使 MVC POST 返回上一页?

    我有以下操作 该操作是从带有记录列表的屏幕调用的 HttpPost Authorize Roles admin public ActionResult Edit EditViewModel itemView 操作完成后 我想返回调用该操作的
  • 查找矩阵中最高值的行索引和列索引

    矩阵中最大值的位置 行和列 可以通过以下方式找到 ma lt matrix 1 50 nrow 5 which ma max ma arr ind TRUE 如果我们不想要最大值的坐标而是 N 个最高值的坐标怎么办 就像是 order ma
  • 在 MVC5 中使用异步有什么优势?

    有什么区别 public ActionResult Login LoginViewModel model string returnUrl if ModelState IsValid IdentityResult result Identi
  • Freebase RDF 转储的 Jena 解析问题(2014 年 1 月)

    我正在尝试使用 Jena 解析 freebase 转储文件 freebase rdf 2014 01 12 00 00 gz 25 GB 耶拿报告了许多有关不良数据的问题 示例 150 0 无效 true 和 false 值无效 我通过在转
  • event.source 在模拟 onFormSubmit 事件中未定义

    我有一个链接到谷歌表格的谷歌表单 当我提交实际表单时 会触发 onFormSubmit 并且我的日志显示 e source Spreadsheet 我还使用了此链接中的模拟 onFormSubmit 代码 如何测试 GAS 中的触发功能 调
  • 在 Chrome 中禁用 Flash

    我们的一个内部应用程序在页面上有一个 Flash 对象 当浏览器中没有可用 安装的 Flash 插件时 我需要测试一种极端情况 既不是内部 pepperflash 也不是系统范围的 adobe flash 播放器插件 根据Chromium
  • 查询列出所有存储过程

    什么查询可以返回 SQL Server 数据库中所有存储过程的名称 如果查询可以排除系统存储过程 那就更有帮助了 正如迈克所说 最好的方法是使用information schema 只要不在主数据库中 系统存储过程就不会被返回 SELECT
  • 在 sns.lmplot() 中格式化 x 轴(日期)

    我需要绘制每日数据sns lmplot 数据具有以下结构 df pd DataFrame columns date origin group value data 2001 01 01 Peter A 1 0 2011 01 01 Pete