python绘制风向玫瑰图和污染物玫瑰图

      风向玫瑰图和污染物玫瑰图是很漂亮的数据可视化展现方式,我们今天花点时间来进行一下实践。

       我们先不使用第三方包来进行绘制,具体如下:

def simplePloter():
    '''
    不适用包,简单绘制
    '''
    N=100
    theta=np.linspace(0.0,2*np.pi,N,endpoint=False)
    radii=10*np.random.rand(N)
    width=np.pi/4*np.random.rand(N)
    ax=plt.subplot(111, projection='polar')
    bars=ax.bar(theta,radii,width=width,bottom=0.0)
    for r, bar in zip(radii,bars):
        bar.set_facecolor(plt.cm.jet(r/10.))
        bar.set_alpha(0.8)
    plt.savefig('simplePloter_windrose.png') 
    plt.show()

       结果如下:

                                                 

          调整N值变小如下:

                                       

       可以看出来还是很漂亮的哈,网上已经有开源的模块windrose可以很方便地实现玫瑰图的绘制,这里我们也来使用一下,GitHub地址在这里,最新的文档在这里,官网中展示了很多漂亮的demo如下:

                                             

                                                

         具体实践调用如下:


def plotPollutionRoseDemo(value,speed,direction,save_path='demo.png'):
    '''
    np.random.random(500) 产生的是0~1之间的数,相当于归一化处理了
    '''
    ax=WindroseAxes.from_ax()
    ax.bar(direction,value,normed=True,opening=0.8,edgecolor='white')
    #ax.bar(direction,speed,normed=True,opening=0.8,edgecolor='white')
    #wrscatter(direction,value, ax=ax, rmax=None)
    ax.set_legend()
    plt.savefig(save_path)

        以PM2.5数据为例,绘制污染物玫瑰图如下所示:
                            

      这个还是很到位的,通过颜色的色阶来区分不同的等级区间。

       借用echarts的极坐标堆叠柱状图也可以绘制出来类似的效果只不过暂时没有找到如何对不同区间的浓度值设定不同的颜色的方法,这里贴一下echarts的模板在这里。效果图如下:
                         

       对比之下还是觉得自己画得更美观一点,欢迎指点哈。

©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值