热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python绘图总结

文章目录seaborn库matplotlib库pydotplusseaborn库是一个基于matplotlib的可视化库1、将矩阵绘制成混淆矩阵(热点图ÿ


文章目录

  • seaborn库
  • matplotlib库
  • pydotplus


seaborn库

是一个基于matplotlib的可视化库

1、将矩阵绘制成混淆矩阵(热点图):

import matplotlib.pyplot as plt
import seaborn
#将矩阵绘制成热点图
seaborn.heatmap(mat)
#显示当前图形,否则会在最后才显示
plt.show()

示例:绘制一个二分类的混淆矩阵:

import matplotlib.pyplot as plt
import seaborn
import numpy
import random
from sklearn.metrics import confusion_matrixtest = []
predict = []
#随机生成1000个实际类别和预测类别
for i in range(1000): test.append(random.randint(0, 1))predict.append(random.randint(0, 1))
#生成混淆矩阵
mat = confusion_matrix(test, predict)
#将矩阵绘制成热点图
seaborn.heatmap(mat)
#显示当前图形,否则会在最后才显示
plt.show()

效果:
在这里插入图片描述

2、seaborn可以导入数据集(需要联网)

详细:https://blog.csdn.net/weixin_41571493/article/details/82528742?utm_source=blogxgwz3

import seaborn
#调用iris数据集
iris = seaborn.load_dataset('iris')
print(iris)

效果:

sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
.. ... ... ... ... ...
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica[150 rows x 5 columns]

3、利用导入的数据库获取各样本数目和描述性统计指标

import seabornseaborn_iris = seaborn.load_dataset('iris')#获取各类别样本的数目
print(seaborn_iris.groupby('species').size())#打印每个特征的描述性统计指标
print(seaborn_iris.describe())

各类别的数目:

species
setosa 50
versicolor 50
virginica 50
dtype: int64

描述性统计指标:

sepal_length sepal_width petal_length petal_width
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333
std 0.828066 0.435866 1.765298 0.762238
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000

4、利用导入的数据集,绘制箱形图

seaborn.boxplot(x = , y = ):规定x轴和y轴

import matplotlib.pyplot as plt
import seaborniris = seaborn.load_dataset('iris')seaborn.boxplot(x = iris["species"], y = iris["sepal_length"])
plt.show()
seaborn.boxplot(x = iris["species"], y = iris["sepal_width"])
plt.show()
seaborn.boxplot(x = iris["species"], y = iris["petal_length"])
plt.show()
seaborn.boxplot(x = iris["species"], y = iris["petal_width"])
plt.show()

效果:
在这里插入图片描述
剩下的三张图类似


matplotlib库

1、matplotlib.pyplot.show():

将绘制的图形显示出来,否则图形会在最后显示

2、绘制散点图

scatter(x = ,y = ,s = ):散点图

绘制一个平方散点图

import matplotlib.pyplot as pltx_value = [1, 2, 3, 4, 5]
y_value = [1, 4, 9, 16, 25]plt.title('Square Number', fontsize = 24)
plt.xlabel('x_value', fontsize = 14)
plt.ylabel('y_value', fontsize = 14)
plt.scatter(x = x_value, y = y_value, s = 200)
plt.show()

效果:
在这里插入图片描述
3、添加误差线

plt.errorbar(K[i], acc[i], fmt=“bo:”, yerr = std[i], capsize = 5)

1)前两个参数表示横坐标和纵坐标

2)fmt表示颜色

3)yerr表示y轴上误差线的长度,相应的也有xerr

4)capsize表示误差线边界横线的长度

详细说明:https://www.jianshu.com/p/5973680a1542

示例:给对应的点添加标准差

#添加误差线(即标准差)
for i in range(len(K)):plt.errorbar(K[i], acc[i], fmt="bo:", yerr = std[i], capsize = 5)
#添加 K 值和对应的正确率
plt.plot(K, acc)
#添加网格
plt.grid(linestyle=':')
#x轴名称
plt.xlabel('K')
#y轴名称
plt.ylabel('Accuracy')
#绘制表格
plt.show()

效果:
在这里插入图片描述
4、生成空间分类图

我知道的两种绘图方式:pcolormesh、scatter

前者的运行速度比后者要快很多

下面代码只是绘图的部分,如果运行并不能实现下图的效果

from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt#特征空间的颜色映射表
color_map = ListedColormap(['#AAAAFF', '#AAFFAA', '#FFAAAA'])
#样本集的各种类别代表的颜色
color = ['blue', 'green', 'red']
#对原始空间进行上色
plt.pcolormesh(X, Y, Z, cmap = color_map)#对原始样本集进行上色
for i in range(len(iris.data)):plt.scatter(iris.data[i][0], iris.data[i][1], c = color[y[i]], s = 10)
#绘图
plt.show()

效果:
在这里插入图片描述


pydotplus

基于鸢尾花数据集生成决策树的可视化

详细说明:https://blog.csdn.net/luanpeng825485697/article/details/78965390

from sklearn.externals.six import StringIO
import pydotplus
from sklearn import tree
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'def visual(index):dot_data = StringIO()#类别名称target_name = ['setosa', 'versicolor', 'virginica']#特征名称attr_names = ['sepal_length (cm)', 'sepal_width (cm)']#决策树可视化函数tree.export_graphviz(clf, out_file=dot_data,feature_names=attr_names,class_names=target_name,filled=True,rounded=True,special_characters=True)graph = pydotplus.graph_from_dot_data(dot_data.getvalue())#pic_name为图片名pic_name = 'tree' + str(index) + '.png'#输出为 png 图片graph.write_png(pic_name)

推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • 求解连通树的最小长度及优化
    本文介绍了求解连通树的最小长度的方法,并通过四边形不等式进行了优化。具体方法为使用状态转移方程求解树的最小长度,并通过四边形不等式进行优化。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
author-avatar
cc_lzx_530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有