我有一系列带有红色和蓝色标记的子图,我对红色标记最感兴趣,因此想将它们放在图的前面:
数据结构是这样的:
SzT Pcp Pcp_3day Pcp_7day Pcp_10day Pcp_14day Pcp_21day Pcp_28day
date
2017-12-04 0.0 8.382 19.304 21.082 40.132 40.132 42.418 71.374
2017-12-05 0.0 12.192 20.574 33.020 42.164 52.324 52.578 81.534
2017-12-06 0.0 1.016 21.590 33.020 34.290 53.340 53.594 82.550
2017-12-07 0.0 12.700 25.908 45.466 46.990 66.040 66.040 95.250
2017-12-08 0.0 5.080 18.796 50.292 51.816 71.120 71.120 88.900
Run Code Online (Sandbox Code Playgroud)
颜色由每个数据点所属的“SzT”值决定,该值要么是 1,要么是 0(尽管上面只显示了“0”)。我用下面的代码构建了这个:
colors = {0 : 'b',
1 : 'r'}
fig = plt.figure(figsize=(20,10))
ax = fig.add_subplot(111)
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 …Run Code Online (Sandbox Code Playgroud) 对于这个措辞不佳的问题,我深表歉意,但是将它放在一行中是很可闻的。
我有一个日期索引的数据框,其中包含与事件持续时间相关的数据,如下所示:
Date Duration
12-01-2010 5
04-02-2010 1
14-02-2010 241
23-12-2010 6
Run Code Online (Sandbox Code Playgroud)
我想将其转换为一个数据索引,该索引每日索引,包含二进制数据,该数据显示在指定日期是否发生了事件。例如,对于上面确定的持续5天的第一个事件:
Date Event
12-01-2010 1
13-01-2010 1
14-01-2010 1
15-01-2010 1
16-01-2010 1
17-01-2010 0
18-01-2010 0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢
我正在尝试对包含在两个数据帧df1和df2中的变量'x'进行简单的箱形图绘制。为此,我使用以下代码:
fig, axs = plt.subplots()
axs[0, 0].boxplot([df1['x'], df2['x']])
plt.show();
Run Code Online (Sandbox Code Playgroud)
但是,我得到这个:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-108-ce962754d553> in <module>()
----> 2 axs[0, 0].boxplot([df1['x'], df2['x']])
3 plt.show();
4
TypeError: 'AxesSubplot' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有大量(200 多个)netCDF 文件,这些文件按日期/时间进行索引,并包含单个位置 3 小时的降水测量值,涵盖 20 年,下面显示了一个简短的示例。
ppt latitude longitude
time
2017-03-01 00:00:00 0.00 16.625 -62.375
2017-03-01 03:00:00 0.00 16.625 -62.375
2017-03-01 06:00:00 0.00 16.625 -62.375
2017-03-01 09:00:00 0.00 16.625 -62.375
2017-03-01 12:00:00 0.00 16.625 -62.375
2017-03-01 15:00:00 0.00 16.625 -62.375
Run Code Online (Sandbox Code Playgroud)
每个文件都包含一个月的数据。我的目标是将所有这些文件连接成一个包含 20 年所有数据的文件。到目前为止,我已经推断出一种可能的前进方式是从每个 netCDF 文件中提取数据并将它们放入一个数据帧中:
import xarray as xr
import pandas as pd
ds = xr.open_dataset('ppt_1_201703.nc')
df = ds.to_dataframe()
Run Code Online (Sandbox Code Playgroud)
如果我有少量文件,使用 concat([df, df2, df3]) 就足够了,我会手动从每个 netCDF 文件中提取数据。然而,对于如此大量的文件,这种方法至少可以说是耗时的。
到目前为止,我的想法是相信最好的方法是一个 for 循环,它根据每个文件的名称循环遍历每个文件并为每个文件生成一个数据帧。然后我需要另一个 for 循环来连接每个数据帧。
我正在纠结如何构建这些循环。文件名是这样的:
ppt_1_199801.nc
ppt_1_199802.nc
ppt_1_199803.nc
...
ppt_1_201610.nc
ppt_1_201611.nc
ppt_1_201612.nc …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个 18 年的月降雨量和洪水频率记录的箱线图。即每个 x 刻度是月份,每个 x 刻度与两个箱线图相关联,一个是降雨量,一个是洪水频率。到目前为止,我已经设法使用 seaborn 绘制了这些图(请参阅以下代码和图像),但是我不知道如何创建带有两个 y 轴的箱线图,这是我需要的,因为每个变量的比例不同。
数据是这样的(数据集中flood_freq的最大值是7,这里没有显示):
Group Rainfall Flood_freq
0 Jan 115.679997 0
1 Jan 72.929999 0
2 Jan 39.719999 0
3 Jan 46.799999 1
4 Jan 54.989998 0
...
212 Dec 51.599998 0
213 Dec 45.359999 0
214 Dec 10.260000 0
215 Dec 52.709998 0
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
dd=pd.melt(FBPdf,id_vars=['Group'],value_vars=['Rainfall','Flood_freq'],var_name='Data')
sns.boxplot(x='Group',y='value',data=dd,hue='Data')
Run Code Online (Sandbox Code Playgroud)
结果如下:
从那以后,我查看了 seaborn 文档,它似乎不允许 2 y 轴(带有 2 y 轴的 Seaborn boxplot)。有没有人能够为我想要实现的目标提供潜在的替代方案?上面链接中的解决方案与我遇到的这个双 y 轴和分组箱线图问题无关。
非常感谢您提前!