python绘制仪表盘图

本文介绍如何在只有两个指标时,通过引入仪表盘图的方法改进普通饼图的可视化效果,特别关注于完成度和未完成的占比,以及如何处理汇总值以准确反映进程。
摘要由CSDN通过智能技术生成

我们都知道饼图能直观的显示每个指标的占比,但是当我们仅有两个指标的时候,再绘制饼图进行可视化就不够好看。

另外一种情况而言:如果完成度是100%,今日的完成情况是59%,但是我想通过可视化来体现完成和未完成的占比以及当下的进程,再用饼图来展示视觉冲击就不够了,本文通过引入仪表盘图的简单绘制方法来解决上述情况的可视化问题。

普通饼图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # windows系统
plt.rcParams['axes.unicode_minus']=False      #正常显示符号
data=pd.DataFrame({'进度':[80,60]},index=['已完成','未完成']).reset_index()
data

 

index进度
0已完成80
1未完成60
plt.pie(data['进度'],autopct='%1.1f%%',labels=['','']) #不显示每个饼的标签
plt.legend(data['index'])

 

仪表盘图

首先我们原对数据表进行操作

new_row=pd.DataFrame({'index':'汇总','进度':data['进度'].sum()},index=[2])
data=pd.concat([data,new_row],ignore_index=True)
data['rate']=round(data['进度']/data['进度'].sum(),2)
data

 

相当于我们把语文数学的占比都缩小了二分之一。

 如果我们再次绘制饼图,则新添加进来的“汇总”则占比为50%,位于饼图的下方

接下来我们继续进行改进,绘制圆环图进而变成仪表盘图。

def pct(pct):      #只显示已完成的数据占比
    new_pct = pct * 2
    if ((pct < data['rate'][1]*100+1) | (pct>= 50)):
        return ''
    else :
        return f'{new_pct:.1f}%'
    
fig, ax = plt.subplots()

wedges, texts, autotexts = ax.pie(data['进度'],colors=['lightblue','lightgray','white'],explode=[0.05,0.05,0],autopct=pct,wedgeprops={'width': 0.3})
for autotext in autotexts:
    autotext.set_fontsize('x-large')  #设置大号字体
    autotext.set_color('red')          #设置红色字体
    x, y = autotext.get_position()
    autotext.set_position((x*0.05, y*0.2))     #设置标签位置
plt.gca().invert_xaxis()  #翻转饼图,我们默认左边显示的为想要展示的数据
title=plt.title('完成进度仪表图',color='red')
title.set_bbox({'facecolor': '0.8', 'pad': 8})

淡蓝色的部分为已完成的进度占比,灰色则是未完成进度占比。值得注意的是,由于我们添加了汇总值,所以autopct显示的是缩小一半的数值,所以我们需要进行扩大两倍的操作,并只显示“已完成”的数值占比(见代码)

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值