雷达图

雷达图又称戴布拉图、蜘蛛网图,可以很好刻画出某些指标的横向或纵向的对比关系

雷达图通常用于多想指标的全面分析。 比如:HR想要比较两个应聘者的综合素质,用雷达图分别画出来,就可以进行直观的比较

python中matplotlib模块绘制雷达图需要用到极坐标系。

雷达图之极坐标系

在平面内去一个定点O,叫极点,引一条射线Ox,叫做极轴,在选定一个长度单位和角度的正方向(通常去逆时针方向)。对于平面内任何一点M,用p表示线段OM的长度(有时也用r),の表示从Ox到OM的角度,p叫做点M的极径,の叫做点M的极角,有序数对(p,の)就叫做点M的极坐标,这样建立的坐标系叫做极坐标系。

通常情况下,M的极径坐标单位为1,极角坐标单位为1°。

雷达图的polar函数

polar(theta,r,**kwargs)

主要参数:

theta:极角の

r:极径

1.普通小图

import matplotlib.pyplot as plt
import numpy as npplt.polar(0.25*np.pi,20,'ro',lw=2) # r表示红色,o是圆点 lw宽度为2
plt.ylim(0,50)  # 设置极轴的上下限
plt.show()

2.如果绘制多个极角和极轴时:

theta:定义了一个ndarry数组存储多个数据。

r:定义一个数组存放极轴的长度,也叫极径。

import matplotlib.pyplot as plt
import numpy as nptheta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2])
r = [75,25,40,64,58,14,80,29]
plt.polar(theta*np.pi,r,'ro',lw=2)
plt.ylim(0,100)
plt.show()# 在图中绘制出多个点:(0.25*π,75),(0.5*π,25).....的点

3.用线把每个点连起来

只需要在样式里面,把‘ro’改成‘ro-’

import matplotlib.pyplot as plt
import numpy as nptheta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2])
r = [75,25,40,64,58,14,80,29]
plt.polar(theta*np.pi,r,'ro-',lw=2)
plt.ylim(0,100)
plt.show()

上面看到我们这个并不是闭合的曲线

4.构造闭合的曲线

只需要多构造一个极坐标点,和第一个重叠就好

import matplotlib.pyplot as plt
import numpy as nptheta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2,0.25])
r = [75,25,40,64,58,14,80,29,75]
plt.polar(theta*np.pi,r,'ro-',lw=2)
plt.ylim(0,100)
plt.show()

5.填充颜色

fill()函数来填充雷达图

import matplotlib.pyplot as plt
import numpy as nptheta = np.array([0.25,0.5,0.75,1,1.25,1.5,1.75,2,0.25])
r = [75,25,40,64,58,14,80,29,75]
plt.polar(theta*np.pi,r,'ro-',lw=2)
plt.fill(theta*np.pi,r,facecolor='r',alpha=0.25)
plt.ylim(0,100)
plt.show()

雷达图实战:

利用linspace将圆等分,

linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
初始数据,结束数据,数据个数,endpoin:是否包含终点
import matplotlib.pyplot as plt
import numpy as npcourse = ['C++','Python','高等数学','大学英语','软件工程','组成原理','操作系统','网络工程']
scores = [82,95,95,89,85,94,86,99]dataLength = len(scores)# 把园等分为dataLength份
angles = np.linspace(0,2*np.pi,dataLength,endpoint=False)
scores.append(scores[0])
angles = np.append(angles,angles[0])
plt.polar(angles,scores,'rv--',lw=2)
plt.thetagrids(angles*180/np.pi,course,fontproperties = 'simhei')
plt.fill(angles,scores,facecolor='r',alpha = 0.4)
plt.show()

三维图

matplotlib支持一些基础的三维图的绘制,比如说曲面散点图和柱状图,需要使用mpl_toolkits模块

如果要绘制三维图形,首先需要使用下面的语句导入相应的对象:

from mpl_toolkits.mplot3d import Axes3D

然后使用下面两种方式之一声明要创建的三维子图

ax = fig.gca(projection='3d')ax = plt.subplot(111,projection='3d')

接下来就可以使用ax的plot()方法绘制三维曲线,plt_surface()方法绘制三维曲面,scatter()方法绘制三维散点图或bar3d()方法绘制三维柱状图了。

三维曲面的绘制方法:p3d.Axes3D.plot_surface()

在绘制三维图形时,至少小指定x,y,z三个坐标的数据,然后再根据不同的图形类型指定额外的参数设置图形的属性。

plot_surface(X,Y,Z,*args,**kwargs)

常用参数:

rstride和csride分别控制xy两个方向的步长,这决定了曲面上每个面的大小

color:指定面片的颜色

cmap:指定面片的颜色映射表

三维散点图绘制方法:p3d.Axes3D.scatter()

p3d.Axes3D.scatter(xs, ys, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs)

常用参数:

xs,ys,zs分别用来指定散点符号的xyz轴,如果同时为标量则指定一个散点符号的坐标,如果同时为等长数组则指定一系列散点符号的坐标

s用来指定散点符号的大小,可以是标量或与xs等长的数组

三维柱状图的绘制方法:p3d.Axes3D.bar3d()

bar3d(self, x, y, z, dx, dy, dz, color=None, zsort='average', shade=True, *args, **kwargs)

常用参数:

x,t,z:分别用来指定每个柱地面的坐标,如果这个三个参数都是标量则指定一个柱的底面坐标,如果是三个等长的数组则指定多个柱的底面坐标

dx,dy,dz:分别用来指定柱在三个坐标轴上的跨度,即x方向的宽度,y方向的厚度和z方向的高度。

color:指定柱的表面颜色

三维曲面图实战

根据下面的测试数据展示图片

theta = np.linspace(-4np.pi,4np.pi,100)
z = np.linspace(-4,4,100)0.3
r = z**4+1
x = r
np.sin(theta)
y = r*np.cos(theta)

import matplotlib as mpl
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm#绘制三维图形
fig = plt.figure() # 初始化
ax = fig.gca(projection = '3d') # 设置3d属性#生成测试数据
theta = np.linspace(-4*np.pi,4*np.pi,100)
z = np.linspace(-4,4,100)*0.3
r = z**4+1
x = r*np.sin(theta)
y = r*np.cos(theta)#绘制三维曲线 设置标签
ax.plot(x,y,z,'bv-',label='参数曲线')# 设置图例字体 字号 显示图例
font = fm.FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf') # 可以不设置
mpl.rcParams['legend.fontsize']=10 # 设置字号
ax.legend(prop=font)
plt.show()

三维柱状图实战

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as pltx = np.random.randint(0,40,10)
y = np.random.randint(0,40,10)
z = 80*abs(np.sin(x+y))ax = plt.subplot(projection = '3d')for xx,yy,zz in zip(x,y,z):color = np.random.random(3)ax.bar3d(xx,yy,0,dx=1,dy=1,dz=zz,color = color)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')plt.show()


如果想获取更多有关python的信息,和想玩python制作的小程序,可以关注微信公众号(dreamspy)。我们一起用python改变世界,一起用python创造梦想。

Matplotlib雷达图、三维饼状图相关推荐

  1. C#绘制立体三维饼状图(超酷)

    原文地址: http://www.msproject.cn/Article/3DTransparentPie.html [翻译]Julijan Sribar著3D Pie Chart 一个用于绘制立体 ...

  2. Matplotlib绘制漂亮的饼状图|python绘制漂亮的饼状图

    python绘图系列文章目录 往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘 ...

  3. python excel数据分析画直方图 饼状图_Excel数据可视化应用(直方图、折线图、饼状图)...

    直方图:对比关系 直方图是一种统计报告图,是表示资料变化情况的主要工具.直方图由一系列高度不等的的纵向条纹或线段表示数据分布的情况.一般用横轴表示数据类型,纵轴表示分布情况. 例1: 1.右键单击图表 ...

  4. jfreechart折线图+柱状图、柱状图(堆叠)+折线图、饼状图、环形图

    记录jfreechart生成图片测试程,主要是为自己研究过之后的记录:) 折线图+柱状图 柱状图(堆叠)+折线图 获取饼状图 获取环形图 jar包下载地址:https://download.csdn. ...

  5. Web在jsp页面中生成柱状图,折线图,饼状图

    一.前言 在实际开发过程中,柱状图,折线图,饼状图在一些OA,ERP中是非常常见的功能,特别是需求方是业务型,数据分析型公司,下面的例子简单实现了饼状图,柱状图,折线图在jsp中生成.(ps:新手上路 ...

  6. 使用POI实现读取Excel数据并生成柱状图、折线图、饼状图的工具类

    最近有一个需求是要通过程序自动根据excel中的数据来动态生成相应的图表.其中就有柱状图,折线图,饼状图.但是没想到用wps生成非常的简单,一点就可以生成,使用POI生成的过程非常的难受.不得不将这次 ...

  7. Unity_扇形图(饼状图)+ UI动画

    GitHub项目链接点这里(求一个star⭐) Unity_扇形图(饼状图)+ UI动画 效果 介绍 关键字 分析及代码 绘图数据 扇形元素 UIPieImage 1.定义参数 2.颜色注解 3.画扇 ...

  8. Java后台生成图表——主代码(折线图,饼状图,柱状图,-》并产出图片PDF或其他格式的图片内容)

    声明: 本文采用的数据均来源于网络,本人只用于学习记录,若有侵权,还望能及时联系. Maven 的 POM 依赖 <!--必要--><!--用于jfreechart生成图片 --&g ...

  9. PHP MySQL饼状图 3d_Highcharts 饼状图(结合PHP、Mysql)

    在做复杂的数据统计功能时会用到饼状图,饼状图用整个圆表示总体的数量或整体值1,用圆内各个扇形的大小表示各部分数量或该部分占总体的百分比,它可以清晰直观的表示各部分之间以及各部分与整体之间的数量关系. ...

  10. Frappe Chart ——折线图和饼状图

    Frappe Chart --折线图和饼状图 学习 1.请使用互联网上的图形工具(推荐: Frappe Chart)与以下中国历年GDP数据与世界主要各国军费预算.分别产生 Line chart与Pi ...

最新文章

  1. Linux 系统挂载数据盘
  2. ActiveMQ — 集群 — 安装与配置
  3. mongodb 主键_MongoDB主键是您的朋友
  4. JS调用后台方法大全
  5. PCL学习笔记02:在ROS下建立编译链接PCL模块
  6. 硅谷还是程序员的“圣地”吗?
  7. linux shell 数字计算详解
  8. android 实现应用程序后台运行的说明
  9. DataGame : AIIA 2019
  10. 借书问题(入门级算法)(C语言)
  11. cad插件加载bplot成功用不了_AUTOCAD 能加载BatchPlot.VLX批量打印插件但是输入bplot打不开批量打印界面...
  12. Kubernetes tutorial - K8S 官方入门教程 中文翻译
  13. 【推荐系统】协同过滤算法
  14. Matlab多行注释单行程序分行写
  15. 服务器安装找不到RAID卡驱动,DELL R430安装WINDOWS 2008 R2 RAID卡无驱动之无法识别sas硬盘的解决方法...
  16. 仿真树叶飘落效果的实现(精灵旋转…
  17. TCP/IP 第1章 概 述
  18. SpringCloud调用接口流程
  19. 阿里云docker安装nginx和tomcat
  20. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什渠道账号登录失败怎么办...

热门文章

  1. 信息检索—布尔模型(Boolean )和向量空间模型(VSM)
  2. CSDN 永远的神.gif
  3. 安全编程之MD5撒盐加密
  4. Chrome浏览器访问https页面显示ERR_CERT_INVALID,且无法跳过继续访问
  5. 数据库三范式(联合主键)
  6. 软件工程式工作—NQS组历程
  7. MatchVs与CocosCreater
  8. 项目管理:有效的沟通对项目的成功至关重要
  9. html图像粒子转换动画,html5 canvas粒子动画生成图片特效
  10. Go语言Marshal序列化遇到的问题