Dav*_*que 5 python time-series matplotlib polar-coordinates
我试图在 matplotlib 中将一整年的数据绘制为极坐标图,但无法找到任何此类示例。我设法根据这个线程转换了熊猫的日期,但我无法将我的头围绕(几乎)y 轴或 theta。
这是我走了多远:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
times = pd.date_range("01/01/2016", "12/31/2016")
rand_nums = np.random.rand(len(times),1)
df = pd.DataFrame(index=times, data=rand_nums, columns=['A'])
ax = plt.subplot(projection='polar')
ax.set_theta_direction(-1)
ax.set_theta_zero_location("N")
ax.plot(mdates.date2num(df.index.to_pydatetime()), df['A'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
这给了我这个情节:

减少日期范围以了解发生了什么
times = pd.date_range("01/01/2016", "01/05/2016")我得到了这个图:

我认为该系列的开头在 90 到 135 之间,但是我如何“重新映射”它以便我的年份日期范围在北原点开始和结束?
极坐标图的角度范围在一个完整的圆弧度范围内,即[0, 2?]。因此,需要将日期范围标准化为整圈。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
times = pd.date_range("01/01/2016", "12/31/2016")
rand_nums = np.random.rand(len(times),1)
df = pd.DataFrame(index=times, data=rand_nums, columns=['A'])
ax = plt.subplot(projection='polar')
ax.set_theta_direction(-1)
ax.set_theta_zero_location("N")
t = mdates.date2num(df.index.to_pydatetime())
y = df['A']
tnorm = (t-t.min())/(t.max()-t.min())*2.*np.pi
ax.fill_between(tnorm,y ,0, alpha=0.4)
ax.plot(tnorm,y , linewidth=0.8)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1628 次 |
| 最近记录: |