1.例一

图1

代码1

#第1步:导出模块
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import font_manager # 中文字体设置第1步,导出模块 #中文字体设置第2步:引出字体模块和位置
my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf") #数据来源,单独设定,非文件来源
#dataLenth = 8 #数据个数,8组数据
#标签
labels = np.array(['3℃','5℃','6℃','3℃','1℃','3℃','3℃','2℃'])
data = np.array([3,5,6,3,1,3,3,2]) #数据值,与上面labels有对应关系 #雷达图的数据格式,基本固定
#angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)
#如果没有dataLenth = 8==len(labels),也可以这样
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False) data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]])) #导出fig图片设置,雷达图这种格式基本固定
fig = plt.figure()
#polar=true,就是ax.set_thetagrids可以显示
ax = fig.add_subplot(111, polar=True)
#数据线的宽度2,ro-代表red-;bo-代表blue-;yo-代表yellow-;o-代表深蓝deepblue-
ax.plot(angles, data, 'ro-', linewidth=2) #ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei") #bug,本机报错
ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties=my_font) #fig标题设置,中文字体设置
#中文字体设置第3步,在显示中文的地方,增加u和fontproperties=my_font
#ax.set_title("温度变化雷达图", va='bottom', fontproperties="SimHei")
ax.set_title(u"温度变化雷达图", va='bottom', fontproperties=my_font)
ax.grid(True) #显示雷达图的一圈一圈的线,8个圈线 #显示图片
plt.show()

2.例二

图2

代码二

#导出模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import font_manager # 中文字体设置第1步,导出模块 #中文字体设置
#plt.rcParams['font.sans-serif'] = ['KaiTi'] # 显示中文,本机不行
#中文字体设置第2步:引出字体模块和位置
my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf") #中文字体设置第3步,在显示中文的地方,在这里增加u
labels = np.array([u'李白', u'王维', u'杜甫',u'白居易']) # 这种中文字体设置很难,分2个地方
#dataLenth = 4 # 数据长度
data_radar = np.array([63, 1, 15, 13]) # 数据 #angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False) # 分割圆周长
#如果不设置dataLenth = 4,也可以len(labels)=4,代表4组数据
angles = np.linspace(0, 2*np.pi, len(labels), endpoint=False) # 分割圆周长 data_radar = np.concatenate((data_radar, [data_radar[0]])) # 闭合
angles = np.concatenate((angles, [angles[0]])) # 闭合 plt.polar(angles, data_radar, 'bo-', linewidth=1) # 做极坐标系
# 中文设置的labels,在这里加fontproperties=my_font
plt.thetagrids(angles * 180/np.pi, labels,fontproperties=my_font)
plt.fill(angles, data_radar, facecolor='r', alpha=0.25)# 填充 plt.ylim(0, 70)
#中文字体设置第3步,在显示中文的地方,增加u和fontproperties=my_font
#va='bottom',默认这个;top可能与王维重叠
plt.title(u'四个人的年总收入', fontproperties=my_font) #标题设置 plt.show()

3.例三

3.1 读取csv数据

L R F M C
customer0 -0.18851 0.701298 -0.66178 -0.68228 -0.43681
customer1 0.050142 -0.33906 0.092392 0.065064 0.09756
customer2 -0.05403 -0.03271 -0.30585 -0.33106 0.011589
customer3 0.309113 -0.64527 1.378002 1.4691 0.3989
customer4 -0.12259 0.332883 -0.53543 -0.54537 -0.08043

3.2 图3

3.3 代码3

#导出模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt #定义
def result_pic(result):
# 解析出类别标签和种类
labels = ['L', 'R', 'F', 'M', 'C']
kinds = list(result.iloc[:, 0])
# 由于在雷达图中,要保证数据闭合,这里就再添加L列,并转换为 np.ndarray
result = pd.concat([result, result[['L']]], axis=1)
centers = np.array(result.iloc[:, 1:])
angle = np.linspace(0, 2 * np.pi, len(labels), endpoint=False)
angle = np.concatenate((angle, [angle[0]]))
# 绘图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True) # 参数polar, 以极坐标的形式绘制图形
# 画线
for i in range(len(kinds)):
ax.plot(angle, centers[i], linewidth=2, label=kinds[i])
# 添加属性标签
ax.set_thetagrids(angle * 180 / np.pi, labels)
plt.title('data show')
plt.legend(loc='lower right')
plt.show() if __name__ == '__main__':
result = pd.read_csv('data2.csv', sep=',')
result_pic(result) #注意细节:一般我们都是喜欢用excel或者wps表格进行数据的输入
#但是在保存数据时,喜欢直接更改文件的属性,导致数据读不出来
#应该是将文件另存为.csv格式

python+matplotlib制作雷达图3例分析和pandas读取csv操作的更多相关文章

  1. python批量制作雷达图

    老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...

  2. 在Excel中制作雷达图

    雷达图的作用 雷达图是专门用来进行多指标体系比较分析的专业图表.从雷达图中可以看出指标的实际值与参照值的偏离程度,从而为分析者提供有益的信息.雷达图一般用于成绩展示.效果对比量化.多维数据对比等等,只 ...

  3. Matplotlib学习---用matplotlib画雷达图(radar chart)

    雷达图常用于对多项指标的全面分析.例如:HR想要比较两个应聘者的综合素质,用雷达图分别画出来,就可以进行直观的比较. 用Matplotlib画雷达图需要使用极坐标体系,可点击此链接,查看对极坐标体系的 ...

  4. HTML5 Canvas制作雷达图实战

    雷达图又叫蜘蛛网图,是一种对各项数据查看很明显的表现图,在很多游戏中,对游戏中的每个角色的分析图一般也用这种图. 下面,用HTML5的Cavas来实现雷达图. 效果 一.创建Canvas var mW ...

  5. DevExpressXtraReport—制作雷达图

    存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========================================== ...

  6. python matplotlib imshow热图坐标替换/映射

    今天遇到了这样一个问题,使用matplotlib绘制热图数组中横纵坐标自然是图片的像素排列顺序, 但是这样带来的问题就是画出来的x,y轴中坐标点的数据任然是x,y在数组中的下标, 实际中我们可能期望坐 ...

  7. Python+Matplotlib制作动画

    注: 在"实验设计与数据处理"的课后作业中,有一个数据可视化的作业,利用课程上学习的某种方法找一个二维函数的最大值,并将这个寻找的过程可视化.在作业里面利用了Matplotlib的 ...

  8. python matplotlib 简单生成图

    import numpy as np import pandas as pd from matplotlib import pyplot as plt data = pd.DataFrame([[1, ...

  9. python matplotlib.pyplot画矩形图 以及plt.gca()

    plt的Rectangle参数: 第一个参数是坐标(x,y),即矩形的画图的起点坐标,这个起点坐标不是一味地从左下角开始画,而是对应整个图中坐标原点,即(0,0). 第二个参数是矩形宽度 第三个坐标是 ...

随机推荐

  1. vue制作滚动条幅-跑马灯效果实例代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 修复ThinkPHP导出excel数字过大时显示为科学记数法

    修复ThinkPHP导出excel数字过大时显示为科学记数法,这种显示对于查看的用户来说是及其不友好的.所以,我们要使其转化为正常的数字串! 我在google 的过程中,查了一些资料.其中 1).// ...

  3. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  4. AngularJS中transclude用法详解

    这篇文章主要介绍了AngularJS中transclude用法,详细分析了transclude的具体功能.使用技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了AngularJS中transcl ...

  5. ssm开发垃圾分类查询系统 源码 mysql

    需求 基于SSM实现一个垃圾分类查询管理系统, 用户可以根据自定义查询分类信息, 管理员可以对分类信息, 垃圾详情信息进行增删改查的管理 运行环境 jdk1.8,tomcat8.5,mysql5.6, ...

  6. mysql行级锁 select for update

    mysql行级锁 select for update 1.属于行级锁 2.where条件后需要写出明确的索引条件(如果有多个条件,可以建立联合索引) 3.如果其所在的事务提交或者回滚后,或者更新该条数 ...

  7. python之路set

    一.set和其他集合的区别: list :允许重复的集合,修改 tuple:允许重复的集合,不修改 dict:字典 set:不允许重复的集合,set不允许重复的,列表是无序的 1.创建一个set s= ...

  8. 如何在Word中排出漂亮的代码,去除回车符,去除拼写检查

    这位博主写到很到位,这里补充一下在VBA里用模块的部分. https://blog.csdn.net/code4101/article/details/41802715 1.放代码的方式是贴纯文本. ...

  9. 《TCP/IP入门经典》摘录--Part 3

    TCP/IP协议系统 3.子网划分和CIDR 子网 划分网络 为什么需要划分子网? 子网划分就是在网络 ID 之下提供了第 2 层逻辑组织.路由器能够把数据报发送给网络里的某个子网地址(一般对应于一个 ...

  10. [CF755B] PolandBall and Game - 博弈论

    [CF755B] Description 两个人轮流说单词,每个人只能说自己的的单词库里的单词.被任意方说过的单词不能再说.一个单词只会在某个人的单词库中出现一次,但是可能同时出现在两个人的单词库中. ...