我已经测量了不同产品在不同角度位置上的位置(在完整旋转中以60度步长的6个值)。我想使用极坐标图来代替笛卡尔坐标系图,在那里0和360是同一点。
使用
有人有改进下面代码的想法吗?
以下是结果,我希望得到类似橙色线条的效果,并使用某种样条以避免当前所得到的锐角。
使用
matplotlib
,我得到了一个蜘蛛图类型的图表,但我想避免点之间的直线,并显示和外推这些点之间的值。我有一个解决方案,还算可以,但我希望有一个漂亮的“一行代码”可以让我的表示更加逼真或更好地处理某些点的切线。有人有改进下面代码的想法吗?
# Libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# Some data to play with
df = pd.DataFrame({'measure':[10, -5, 15,20,20, 20,15,5,10], 'angle':[0,45,90,135,180, 225, 270, 315,360]})
# The few lines I would like to avoid...
angles = [y/180*np.pi for x in [np.arange(x, x+45,5) for x in df.angle[:-1]] for y in x]
values = [y for x in [np.linspace(x, df.measure[i+1], 10)[:-1] for i, x in enumerate(df.measure[:-1])] for y in x]
angles.append(360/180*np.pi)
values.append(values[0])
# Initialise the spider plot
ax = plt.subplot(polar=True)
# Plot data
ax.plot(df.angle/180*np.pi, df['measure'], linewidth=1, linestyle='solid', label="Spider chart")
ax.plot(angles, values, linewidth=1, linestyle='solid', label='what I want')
ax.legend()
# Fill area
ax.fill(angles, values, 'b', alpha=0.1)
plt.show()
以下是结果,我希望得到类似橙色线条的效果,并使用某种样条以避免当前所得到的锐角。