Matplotlib Y 轴无法通过多重索引正确缩放

Matplotlib Y Axis not scaling properly with Multi Indexing

提问人:HasBeen 提问时间:10/20/2023 最后编辑:HasBeen 更新时间:10/21/2023 访问量:25

问:

我正在尝试为每个带有日期索引的传感器散点图两个项目(温度和湿度)。我想使用一个 Y 轴 (0 - 100) 表示温度和湿度。我不知道如何强制自定义 Y 轴。

它似乎也在绘制空值?显然,我对熊猫不是很擅长,所以我敢肯定可能会少一到两块。

文件链接 TestData

import pandas as pd
import numpy as np
import locale  
import seaborn as sns
sns.set(rc={'figure.figsize':(15,8)})
import matplotlib.pyplot as plt
%matplotlib inline

locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

# Read data file without header/index and don't let pandas infers the dtype
df = pd.read_csv('TestData.csv', header=None, dtype=str)
m = df[1].notna()  # relevant rows (6, 12, 6)
#%%
# Create datetime index (rows)
dt = (pd.to_datetime(df[0].ffill() + ' ' + df[1], format='%d-%b-%y %H')
        .rename('DateTime')[m])
dt[2::3] += pd.DateOffset(hours=12)  # convert 6PM to 18


# Create multi-index headers (columns)
cols = df.loc[[0, 1]].ffill(axis=1).dropna(how='all', axis=1).T
mi = pd.MultiIndex.from_frame(cols, names=['Sensor', 'Metric'])

# Final output (remove two first columns)
out = df.loc[m, 2:].set_axis(dt, axis=0).set_axis(mi, axis=1)

Sens1 = out['S1']
       
plt.scatter(Sens1.index, Sens1['T'])
plt.scatter(Sens1.index, Sens1['%'])
plt.yticks(np.arange(0, 100, 10))

结果是:scatterplot

python matplotlib jupyter-notebook 多索引

评论

0赞 Suraj Shourie 10/20/2023
添加一个最小可重现的示例
0赞 HasBeen 10/20/2023
我添加了要共享的完整代码和文件。
0赞 Suraj Shourie 10/20/2023
您的数据链接不起作用,但即便如此,您也需要提供最少的数据集和最的可重现代码
0赞 HasBeen 10/21/2023
我修复了链接,但我不明白您声明的第二部分,“最小可重现代码”。上面的代码是我在测试文件上使用的所有代码,它正在产生问题。我第一次发布时,我有少量代码处理情节,这是不正确的。我希望这一次所有的信息都在那里。无论如何,谢谢你看它!

答: 暂无答案