gpt4 book ai didi

python - seaborn 热图中的日期轴

转载 作者:太空狗 更新时间:2023-10-30 02:17:05 30 4
gpt4 key购买 nike

一点信息:我是编程新手,这是我第一个脚本的一小部分。这个特定部分的目标是显示一个 seaborn 热图,其中 y 轴为垂直深度,x 轴为时间,科学测量的强度作为热函数。

如果这个问题在其他地方得到了回答,我很抱歉,但我的搜索能力一定是失败了。

sns.set()
nametag = 'Well_4_all_depths_capf'
Dp = D[D.well == 'well4']
print(Dp.date)


heat = Dp.pivot("depth", "date", "capf")
### depth, date and capf are all columns of a pandas dataframe

plt.title(nametag)

sns.heatmap(heat, linewidths=.25)

plt.savefig('%s%s.png' % (pathheatcapf, nametag), dpi = 600)

这是从“print(Dp.date)”打印的内容所以我很确定数据框的格式是我想要的格式,尤其是年、日、月。

0    2016-08-09
1 2016-08-09
2 2016-08-09
3 2016-08-09
4 2016-08-09
5 2016-08-09
6 2016-08-09
...

但是,当我运行它时,日期轴总是打印出我不想要的空白时间(00:00 等)。有没有办法从日期轴中删除这些?

问题是在上面的单元格中我使用这个函数来扫描文件名并用日期创建一个列吗???使用 datetime 而不仅仅是日期函数是错误的吗?

D['date']=pd.to_datetime(['%s-%s-%s' %(f[0:4],f[4:6],f[6:8]) for f in             
D['filename']])

enter image description here

最佳答案

您必须对数据框的日期系列使用 strftime 函数才能正确绘制 xtick 标签:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime, timedelta
import random

dates = [datetime.today() - timedelta(days=x * random.getrandbits(1)) for x in xrange(25)]
df = pd.DataFrame({'depth': [0.1,0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001, 0.1, 0.05, 0.01, 0.005, 0.001],\
'date': dates,\
'value': [-4.1808639999999997, -9.1753490000000006, -11.408113999999999, -10.50245, -8.0274750000000008, -0.72260200000000008, -6.9963940000000004, -10.536339999999999, -9.5440649999999998, -7.1964070000000007, -0.39225599999999999, -6.6216390000000001, -9.5518009999999993, -9.2924690000000005, -6.7605589999999998, -0.65214700000000003, -6.8852289999999989, -9.4557760000000002, -8.9364629999999998, -6.4736289999999999, -0.96481800000000006, -6.051482, -9.7846860000000007, -8.5710630000000005, -6.1461209999999999]})
pivot = df.pivot(index='depth', columns='date', values='value')

sns.set()
ax = sns.heatmap(pivot)
ax.set_xticklabels(df['date'].dt.strftime('%d-%m-%Y'))
plt.xticks(rotation=-90)

plt.show()

enter image description here

关于python - seaborn 热图中的日期轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40925458/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com