Python和科学计算认证群组  - 讨论区

标题:如何画出 Wind rose plot

2014年07月04日 星期五 17:35

试试这样行不,最近没用Python,有点忘记了

        #def get_labels():

        #    labels = np.copy(self._info['bins'])

        #    labels = ["[%.1f : %0.1f[" %(labels[i], labels[i+1])   for i in range(len(labels)-1)]

        #    return labels

        def get_labels():

            binst = np.copy(self._info['bins'])            

            labels = []            

            for i in range(len(binst)-2):                

                labels.append('%.1f: %0.2f' %(binst[i],binst[i+1]))            

            labels.append('%.2f: Inf' %(binst[-2]))                        

            return labels

2014年07月04日 星期五 18:17

还是不行!还是有错误。

 File "windrose.py", line 166, in legend

    loc, **kwargs)


TypeError: __init__() got an unexpected keyword argument 'axespad'


2014年07月04日 星期五 18:22

不是这几行的问题,请你给出出错的代码

2014年07月04日 星期五 19:16

倒是画出张图,但是没有legend, 还有点错误,不知道出在哪?提示是指166行。

 

161        null = kwargs.pop('labels', None)

162        null = kwargs.pop('handles', None)

163       handles = get_handles()

164        labels = get_labels()

165        self.legend_ = matplotlib.legend.Legend(self, handles, labels,

166                                               loc, **kwargs)

 

runfile('C:/Users/lenovo/Documents/Python Scripts/windrose/example.py', wdir='C:/Users/lenovo/Documents/Python Scripts/windrose')

UMD has deleted: windrose

Traceback (most recent call last):

 

  File "<ipython-input-4-33777c218672>", line 1, in <module>

    runfile('C:/Users/lenovo/Documents/Python Scripts/windrose/example.py', wdir='C:/Users/lenovo/Documents/Python Scripts/windrose')

 

  File "C:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 585, in runfile

    execfile(filename, namespace)

 

  File "C:/Users/lenovo/Documents/Python Scripts/windrose/example.py", line 25, in <module>

    set_legend(ax)

 

  File "C:/Users/lenovo/Documents/Python Scripts/windrose/example.py", line 19, in set_legend

    l = ax.legend(axespad=-0.10)

 

  File "windrose.py", line 166, in legend

    loc, **kwargs)

 

TypeError: __init__() got an unexpected keyword argument 'axespad'




2014年07月04日 星期五 19:34

把set_legend(ax) 改动一下试试

 

#def set_legend(ax):

# l = ax.legend(axespad=-0.10)

# plt.setp(l.get_texts(), fontsize=8)

 

 

 

def set_legend(ax):

l = ax.legend(title='wind speed (m/s)', loc='right', fontsize=8, frameon=True, fancybox=True, ncol=1, borderaxespad=-0.1, borderpad=0.3, handlelength=1)

 

plt.setp(l.get_texts(), fontsize=8)

 

 

 

2014年07月04日 星期五 20:02

谢谢!终于可以了!为什么在example.py里不认识axespad?是matplotlib的版本问题吗?

在windrose里,l = ax.legend(axespad=-0.10)都没问题了!

 

2014年07月04日 星期五 20:08

> 为什么在example.py里不认识axespad?是matplotlib的版本问题吗

我也是菜鸟一只,不明白,有可能吧

2014年07月04日 星期五 20:09

还有个问题,你画出来的图边缘也是直线而非漂亮的圆弧吗

2014年07月04日 星期五 22:46

你说的是bar的边缘吗?也是直线!

2014年07月09日 星期三 06:50

问了原作者,他也不清楚是什么原因造成bar有时是圆弧有时是直线

我觉得可能是matplotlib和python编译器版本的问题,暂且只能这样了

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号