MPAndroidChart Entry 实现不显示纵坐标值 excel纵坐标不显示_PMI


使用极坐标图进行数据展示,相比于传统的笛卡尔坐标系(横纵坐标x,y),可以将普通的图表变得更加有视觉冲击力,极坐标图也称南丁格尔玫瑰图,本质就是极坐标系中的柱状图。本次采用一个案例展示各国的制造业指数数据(数据为测试用例数据,不具有分析价值)

源数据是一张Excel图表,包括国家和制造指数两个字段:


MPAndroidChart Entry 实现不显示纵坐标值 excel纵坐标不显示_数组_02


一、将本次数据可视化需要用到的第三方库导入:


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import math


二、将Excel文件导入生成一个dataframe数组,将数组按照制造指数从小到大排列(提升数据展示效果的美观性),并将后续需要用到的变量进行赋值


data=pd.read_excel(r'D:python学习网易微专业数据分析课程python数据分析基础各国制造指数.xlsx')
data.sort_values(by='制造指数',inplace=True)
country=data['国家']
PMI=data['制造指数']
N=len(data)


三、matplotlib不默认支持中文字符,需要通过修改字体的方式实现对中文的展示


plt.rcParams['font.sans-serif']=['SimHei']  #设置字体为黑体,可以支持中文显示


四、通过设置绘图区域,创建一个极坐标系,并进行展示效果的相关设置


ax=plt.subplot(111,projection='polar') #设置一个绘图区域,建立极坐标图
ax.set_theta_zero_location('E')  
#表示绘图开始的方位,分别为N, NW, W, SW, S, SE, E, NE(由东西南北组成的八个方向)
ax.set_thetagrids([]) #不显示外圈的角度值
ax.set_axis_off() #隐藏坐标轴
ax.tick_params(labelleft=False) #内圈的各个刻度线不显示


五、生成一组弧度数据,并以此绘制极坐标图


theta = np.arange(0, 2*np.pi, 2*np.pi/N) #生成一组弧度数据
bars=ax.bar(theta,PMI,bottom=30,width=1.8*np.pi/N) 
#对应的参数分别是left(可以视为x坐标),height(可以视为y坐标),bottom(可以视为中间的空洞,用来添加文字说明等)width就是柱形的弧度(适当比例缩小宽度提升美观性)


六、对形成的极坐标图各个扇形进行颜色自定义设置


for i,bar in zip(PMI, bars):
    bar.set_facecolor(plt.cm.CMRmap_r(i))  #CMRmap_r是一个数据集,用PMI指数作为索引值可以对应一个颜色,通过这种方式实现给各个柱形分配不同的颜色(同一色系从浅到深)
    bar.set_alpha(0.5)  #设置色彩的透明度(降低可以提升美观性)


七、对形成的极坐标图各个扇形增加数据和标签展示


for i,j,k in zip(theta,PMI,country):
    if 90<math.degrees(i) < 270:
        ax.text(i,j+70,str(k),rotation=math.degrees(i)-180) 
#对每个扇形添加对应标签,参数为弧度,标签的y轴坐标(在扇形外部),标签的内容以及标签放置的角度,标签放置方向与扇形的方向保持一致(90~270度反向调换提升数据可读性)
    else:
        ax.text(i, j + 70, str(k), rotation=math.degrees(i))
    ax.text(i, j-5, str(j)) #对每个扇形添加对应数据,参数为弧度,数据的y轴坐标,数据的内容


八、最后进行图表效果展示


plt.show()


最终效果如下:


MPAndroidChart Entry 实现不显示纵坐标值 excel纵坐标不显示_数组_03