#coding=utf-8 #导入相应的库 import matplotlib.pyplot as plt import matplotlib.cbook as cbook import matplotlib.image as image import numpy as np import pandas as pd import sys reload(sys) sys.setdefaultencoding('utf-8') datafile = cbook.get_sample_data('logo.png', asfileobj=False) print('loading %s' % datafile) im = image.imread(datafile) im[:, :, -1] = 0.5 # set the alpha channel #设置字体,可以在图上显示中文 plt.rcParams['font.sans-serif']=['Microsoft YaHei'] #读取数据 data=pd.read_excel('haiwaiyiqing.xlsx',index_col=0) #数据计算,这里只取前20个国家 radius = data['count'][:20] n=radius.count() theta = np.arange(0, 2*np.pi, 2*np.pi/n)+2*np.pi/(2*n) #360度分成20分,外加偏移 #在画图时用到的 plt.cm.spring_r(r) r的范围要求时[0,1] radius_maxmin=(radius-radius.min())/(radius.max()-radius.min()) #x-min/max-min 归一化 #画图 fig = plt.figure(figsize=(20,5),dpi=256) xtick = data['count'].values ax = fig.add_subplot('111',projection='polar') #启用极坐标 bar = ax.bar(theta, xtick,width=2*np.pi/n) ax.set_theta_zero_location('N') #分别为N, NW, W, SW, S, SE, E, NE ax.set_rgrids([]) #用于设置极径网格线显示 ax.set_xlabel(xtick) ax.set_xticks(xtick) ax.set_xticklabels(xtick) #ax.xaxis.set_ticks_position('bottom') # ax.set_rticks() #用于设置极径网格线的显示范围 # ax.set_theta_direction(-1) #设置极坐标的正方向 ax.set_thetagrids(xtick) #用于设置极坐标角度网格线显示 # ax.set_theta_offset(np.pi/2) #用于设置角度偏离 ax.set_title('globle 2019-NCP',fontdict={'fontsize':8}) #设置标题 #设置扇形各片的颜色 for r, bar in zip(radius_maxmin, bar): bar.set_facecolor(plt.cm.spring_r(r)) bar.set_alpha(0.8) #设置边框显示 for key, spine in ax.spines.items(): if key=='polar': spine.set_visible(False) fig.figimage(im, 10, 10, zorder=3) plt.show() #保存图片 fig.savefig('COVID.png')
matlib制作人民日报图表,python2.7
最新推荐文章于 2022-05-17 22:31:09 发布