时间序列中的obsby图海滩球

2024-09-30 20:37:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在时间序列中绘制一个obpy(或任何python)地震震源机制。在

import matplotlib.pyplot as plt
import datetime
import numpy as np
from obspy.imaging.beachball import Beach

# x = np.arange(0,100,4)
x = np.array([datetime.datetime(2013, 9, 28, i, 0) for i in range(24)])
y = np.random.randint(100, size=x.shape)

fig, ax = plt.subplots(figsize=(10,6))
ax.plot(x,y)

bball = Beach([70, 90, 80], xy=(x[10],y[10]), width=5, linewidth=1, alpha=0.85)

bball.set_zorder(1)
ax.add_collection(bball)
plt.show()

对于x使用整数/浮点序列时,它可以正常工作,但时间序列在此处失败:

^{pr2}$

source code中的函数xy2patch正在尝试按浮点值缩放时间。在

有什么想法吗?破解来源?其他套餐?谢谢。在


Tags: importdatetimeasnp时间绘制震源plt
1条回答
网友
1楼 · 发布于 2024-09-30 20:37:06

找到了。将时间转换为matplotlib浮点表示。在

import matplotlib.pyplot as plt
import datetime
import numpy as np
from obspy.imaging.beachball import Beach
from matplotlib.dates import date2num

# x = np.arange(0,100,4)

x = date2num(np.array([datetime.datetime(2013, 9, 28, i, 0) for i in range(24)]))
y = np.random.randint(100, size=x.shape)

fig, ax = plt.subplots(figsize=(10,6))
ax.plot(x,y)

bball = Beach([70, 90, 80], xy=(x[10],y[10]), width=(.1,15), linewidth=1, alpha=0.85)

bball.set_zorder(1)
ax.add_collection(bball)
plt.show()

感谢你给了亚历山德正确的方向。在

另外,我想给投反对票的人一张反对票,因为他没有解释。在

相关问题 更多 >