提问人:HasBeen 提问时间:10/20/2023 最后编辑:HasBeen 更新时间:10/21/2023 访问量:25
Matplotlib Y 轴无法通过多重索引正确缩放
Matplotlib Y Axis not scaling properly with Multi Indexing
问:
我正在尝试为每个带有日期索引的传感器散点图两个项目(温度和湿度)。我想使用一个 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))
答: 暂无答案
评论