matplotlib 中每月的大刻度和每周的小刻度

2023-12-20

I have this plot that shows the temperature of every hour for every day of the year enter image description here

这是我写的代码:

mydateparser = lambda x: datetime.strptime(x, "%Y-%m-%d")
df = pd.read_csv("Vaderdata.csv",
           usecols=['Date','Time','Temp'],
           parse_dates=['Date'],
           date_parser=mydateparser)

pivot = pd.pivot_table(df, values='Temp',columns='Date',index='Time')
fig, ax = plt.subplots(figsize = (12,6)) 

clr = sns.color_palette("coolwarm", as_cmap=True)
fig = sns.heatmap(pivot, center = 0,cmap = clr )

plt.show()

正如您所看到的,x 轴的描述性并不强。 我希望每个新的月份都有一个带有标签的大勾号,每个新的一周都有一个小勾号。 我找到了一些将日期时间格式化为字符串的示例,以便 x 轴至少显示一些内容而不仅仅是零,但我无法找到如何执行我刚才描述的操作。


月份显示由 MonthLocator 设置为一个月并带有月份缩写。数周以来,我们在 DayLocator 中拥有 7 天间隔的数据并设置原始标签。本来就很容易使用ax.xaxis.set_minor_formatter('%U'), but

import pandas as pd
import numpy as np
import random

random.seed(202012)

date_rng = pd.date_range('2019/01/01', '2019/12/31', freq='1H')
temp = np.random.randint(-10,35, size=8737)
df = pd.DataFrame({'date':pd.to_datetime(date_rng),'Temp':temp})

df['Time'] = df['date'].dt.hour
df['Date'] = df['date'].dt.date
df['Week'] = df['date'].dt.week
df = df[['Date','Week','Time','Temp']]
pivot = pd.pivot_table(df, values='Temp',columns='Date',index='Time')

# week num create
weeks = df[['Date','Week']]
ww = weeks.groupby('Week').first().reset_index()

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker
import seaborn as sns

fig, ax = plt.subplots(figsize = (24,6)) 

clr = sns.color_palette("coolwarm", as_cmap=True)
fig = sns.heatmap(pivot, center = 0,cmap = clr )

months = mdates.MonthLocator(interval=1)
months_fmt = mdates.DateFormatter('%b')
ax.xaxis.set_major_locator(months)
ax.xaxis.set_major_formatter(months_fmt)

days = mdates.DayLocator(interval=7)
ax.xaxis.set_minor_locator(days)
ax.xaxis.set_minor_formatter(ticker.FixedFormatter(ww.Week))
# ax.xaxis.set_minor_formatter('%U') # Not displayed correctly

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

matplotlib 中每月的大刻度和每周的小刻度 的相关文章

随机推荐

  • 检查项目是否在列表中 (Lisp)

    检查某个项目是否在列表中的简单方法是什么 就像是 in item list 可能会回来true if item 1 and list 5 9 1 2 and false if item 7 通用语言 FIND这不是一个好主意 gt find
  • Docker 容器内的 root 密码

    我正在使用一个 Docker 映像 该映像是使用 USER 命令构建的 以使用名为的非 root 用户dev 在容器内 我是 dev 但我想编辑 etc hosts file 所以我需要成为root 我正在尝试 su 命令 但系统要求我输入
  • newInstance() 的 InstantiationException [重复]

    这个问题在这里已经有答案了 以下工作正常时className is java awt Rectangle and java lang String 等等 但它失败了 java lang Integer java lang Double gi
  • 使用 Rails 即时生成唯一令牌

    我想在控制器中为 user info token 列中的用户生成令牌 但是 我想检查当前没有用户拥有该令牌 这段代码足够吗 begin new token SecureRandom urlsafe base64 user User find
  • 帮助进行简单的 SQL 查询

    Table A Id Name 1 Apple 2 Mango Table B Id Locale Name In Lang 1 es ES Apple Spanish 1 it IT Apple Italian 2 it IT Mango
  • 如何首先在 EF 4.1 代码中映射父列

    在我的项目中 我有以下 DomainModel public class Login public Guid Id get set public Login CreatedBy get set 我正在使用流畅的配置 如下所示 modelBu
  • 翻转视图动画不起作用

    我正在开发一个 iPad 应用程序 它在视图中向用户提出问题 当他们回答问题时 我希望视图转换到包含下一个问题的另一个视图 为了使它看起来很奇特 我试图向它添加一个卷曲过渡 但我编写的代码不起作用 我看不到找到问题 它确实显示了正确的视图
  • 自动处理供应商前缀的 CSS 框架?

    我查看了 Blueprint Less 和 SCSS 但它们似乎都没有达到我想要的效果 我觉得这很难相信 因为处理供应商前缀是编写 CSS 中最令人沮丧的部分 因此这似乎是任何编写 CSS 框架的人应该解决的第一个问题 我想知道 是否有一个
  • 循环遍历宏 Varargs 值

    如果我定义一些宏 define foo args do something 有没有某种方法可以真正循环args而不是将其传递给另一个函数 就像是 define foo args for int i 0 i lt sizeof args i
  • 使用 Ember.js,如何在渲染视图后运行一些 JS?

    将 Ember 视图插入 DOM 后如何运行函数 这是我的用例 我想使用 jQuery UI sortable 来允许排序 你需要覆盖didInsertElement因为它是 当视图的元素被插入到 DOM 中时调用 重写此函数以执行需要文档
  • Xcode ui 测试:staticTexts 开头

    我想检查我的用户界面上是否存在以前缀开头的元素 如何在 Xcode 7 UI 测试中实现它 app tables AAA staticTexts Fax 0049XXXXXXXX exists 我在 tableview 单元格中有三个元素
  • 相互引用的不可变实例

    有了这些类 有没有可能创建一对男女朋友 也就是说 一个男孩有一个女朋友 而这个男孩也是她的男朋友 abstract class Person val name String case class Girl name2 String val
  • 无法在 Eclipse Juno Mac 中安装新软件

    我是 Eclipse 新手 我正在尝试为其安装 Android ADT 插件 当我转到 帮助 gt 安装新软件 时 出现错误框 无法完成请求 此安装尚未正确配置软件更新 有关详细信息 请参阅错误日志 错误日志 Could not locat
  • 颤振复选框在 StatelessWidget 中不起作用

    这是我的班级 class Home extends StatelessWidget 复选框位于此处 override Widget build BuildContext context return Scaffold body Center
  • 识别已选择 CheckedListBox 项目

    到目前为止我从未处理过checkedListBox1 我想要制作的程序将受益于使用它 而不是必须使用大量复选框 我有代码 private void checkedListBox1 SelectedIndexChanged object se
  • 防止 UIAlertController 关闭

    我想阻止UIAlertController从解雇 我有一个UIAlertAction它只是将一个字符串附加到 UIAlertTextField 中 但是 一旦点击它就会关闭视图控制器 不需要 我尝试添加 NSNotification 但结果
  • 用矩形填充直线多边形[重复]

    这个问题在这里已经有答案了 给定一个完全由矩形创建的多边形 并由点数组定义 其中边始终与轴对齐 I am trying to determine a quick algorithm to find a small number of rec
  • Eclipse 生成包中的所有 getter setter

    有没有办法在 Eclipse 中生成整个包中的所有 getter 和 setter 谢谢 假设您正在使用 Java 您可能想看看龙目岛计划 http projectlombok org
  • 如何从 Google 表单提交触发器功能访问电子表格

    我在 Google Forms 脚本中有一个函数 可以将唯一 ID 添加到要添加到关联工作表的行 该函数在提交表单时触发 这是我一直在使用的脚本的一个版本 function onFormSubmit e Get the active she
  • matplotlib 中每月的大刻度和每周的小刻度

    I have this plot that shows the temperature of every hour for every day of the year 这是我写的代码 mydateparser lambda x dateti