Python 极坐标图问题

Python 极坐标图问题,python,matplotlib,Python,Matplotlib,我试图在极坐标图上绘制一些值。代码如下: def plot_values(data): bridge = CvBridge() fig = figure(figsize=(4,4)) ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True) w,h = fig.canvas.get_width_height() plot([0,0],[0,1], color=(0.5,0.5,0.5), linewidt

我试图在极坐标图上绘制一些值。代码如下:

def plot_values(data):
    bridge = CvBridge()

    fig = figure(figsize=(4,4))
    ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True)
    w,h = fig.canvas.get_width_height()

    plot([0,0],[0,1],  color=(0.5,0.5,0.5), linewidth = 3)
    plot([1*pi/2,1*pi/2],[0,1], color=(0.5,0.5,0.5), linewidth = 3)
    plot([2*pi/2,2*pi/2],[0,1],  color=(0.5,0.5,0.5), linewidth = 3)
    plot([3*pi/2,3*pi/2],[0,1],  color=(0.5,0.5,0.5), linewidth = 3)

    HAS= len(HAS_names)*4
    radii=np.repeat(data,HAS) 
    width = 2*np.pi/HAS
    for i in range(0, len(HAS_names)):
      radii[i] = AUC_value[HAS_names[i]]/HAS_frames[i] #assignment done through lists
    theta = np.arange(0.0, 2*np.pi, 2*np.pi/HAS)
    bars = ax.bar(theta, radii, width=width, bottom=0.0)

    xT=PLT.xticks()[0]
    xL=['','HAS','','HAD','','TAS','','TAD']
   PLT.xticks(xT, xL)
   for r,bar in zip(radii, bars):
     bar.set_facecolor( cm.jet(r/10.))
     bar.set_alpha(0.5)
  fig.canvas.draw()
  canvas = PLT.get_current_fig_manager().canvas
  canvas.draw()
我得到如下输出:

def plot_values(data):
    bridge = CvBridge()

    fig = figure(figsize=(4,4))
    ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True)
    w,h = fig.canvas.get_width_height()

    plot([0,0],[0,1],  color=(0.5,0.5,0.5), linewidth = 3)
    plot([1*pi/2,1*pi/2],[0,1], color=(0.5,0.5,0.5), linewidth = 3)
    plot([2*pi/2,2*pi/2],[0,1],  color=(0.5,0.5,0.5), linewidth = 3)
    plot([3*pi/2,3*pi/2],[0,1],  color=(0.5,0.5,0.5), linewidth = 3)

    HAS= len(HAS_names)*4
    radii=np.repeat(data,HAS) 
    width = 2*np.pi/HAS
    for i in range(0, len(HAS_names)):
      radii[i] = AUC_value[HAS_names[i]]/HAS_frames[i] #assignment done through lists
    theta = np.arange(0.0, 2*np.pi, 2*np.pi/HAS)
    bars = ax.bar(theta, radii, width=width, bottom=0.0)

    xT=PLT.xticks()[0]
    xL=['','HAS','','HAD','','TAS','','TAD']
   PLT.xticks(xT, xL)
   for r,bar in zip(radii, bars):
     bar.set_facecolor( cm.jet(r/10.))
     bar.set_alpha(0.5)
  fig.canvas.draw()
  canvas = PLT.get_current_fig_manager().canvas
  canvas.draw()

我正在尝试绘制标记为HAS的象限中出现的值,其余区域需要空白。我尝试删除radii=np.repeatdata,HAS,并将其声明为函数本身中的全局变量,但在for循环之前,我首先需要为radii分配一些值。
非常感谢您的帮助。

那么您希望所有数据都显示在HAS象限中,而HAD、TAS、TAD象限中没有任何数据?应该只需要修改θ就可以了,不是吗?是的,我只想在象限上绘制值。我不知道要修改θ的哪个变量。我知道绘制在其他象限上的值是通过以下语句完成的:radii=np。repeatdata,HAS,HAS象限上的值是通过radii[I]=AUC_值[HAS_name[I]]/HAS_frames[I]完成的。正如@tnknepp所说,你的θ是从0到2pi,如果希望数据位于HAS象限中,只需将2*pi更改为pi/2即可。除非不是这样,在这种情况下,这个问题是非常不清楚的。特别是因为您上次关于全局变量的评论在上下文中似乎没有多大意义。