python优雅编程_Python优雅地可视化数据

[导读]声明:由于本文的代码大部分是参考书中的例子,所以不提供完整代码,只提供示例片段,也就是只能看出某一部分用法,感兴趣的需要在自己的数据上学习测试。

声明:由于本文的代码大部分是参考书中的例子,所以不提供完整代码,只提供示例片段,也就是只能看出某一部分用法,感兴趣的需要在自己的数据上学习测试。

最开始,当然还是要导入我们需要的包:# -*- coding=utf-8 -*-from matplotlib import pyplot as pltfrom sklearn.datasets import load_irisimport numpy as npimport itertools

1. 画散点图

画散点图用plt.scatter(x,y)。画连续曲线在下一个例子中可以看到,用到了plt.plot(x,y)。

plt.xticks(loc,label)可以自定义x轴刻度的显示,第一个参数表示的是第二个参数label显示的位置loc。

plt.autoscale(tight=True)可以自动调整图像显示的最佳化比例 。plt.scatter(x,y)

plt.title("Web traffic")

plt.xlabel("Time")

plt.ylabel("Hits/hour")

plt.xticks([w*7*24 for w in range(10)],['week %i' %w for w in range(10)])

plt.autoscale(tight=True)

plt.grid()##plt.show()

画出散点图如下:

20170531113159558.jpg

2. 多项式拟合并画出拟合曲线## 多项式拟合fp2 = np.polyfit(x,y,3)

f2 = np.poly1d(fp2)

fx = np.linspace(0,x[-1],1000)

plt.plot(fx,f2(fx),linewidth=4,color='g')## f2.order: 函数的阶数plt.legend(["d=%i" % f2.order],loc="upper right")

plt.show()

效果图:

20170531113236912.jpg

3. 画多个子图

这里用到的是sklearn的iris_dataset(鸢尾花数据集)。

此数据集包含四列,分别是鸢尾花的四个特征:

sepal length (cm)——花萼长度

sepal width (cm)——花萼宽度

petal length (cm)——花瓣长度

petal width (cm)——花瓣宽度

这里首先对数据进行一定的处理,主要就是对特征名称进行两两排列组合,然后任两个特征一个一个做x轴另一个做y轴进行画图。# -*- coding=utf-8 -*-from matplotlib import pyplot as pltfrom sklearn.datasets import load_irisimport numpy as npimport itertools

data = load_iris()#print(data.data)#print(data.feature_names)#print(data.target)features = data['data']

feature_names = data['feature_names']

target = data['target']

labels = data['target_names'][data['target']]

print(data.data)

print(data.feature_names)

这里有一个排列组合参考代码,最后是取出了两两组合的情况。

排列组合的结果是feature_names_2包含了排列组合的所有情况,它的每一个元素包含了一个排列组合的所有情况,比如第一个元素包含了所有单个元素排列组合的情况,第二个元素包含了所有的两两组合的情况……所以这里取出了第二个元素,也就是所有的两两组合的情况feature_names_2 = []#排列组合for i in range(1,len(feature_names)+1):

iter = itertools.combinations(feature_names,i)

feature_names_2.append(list(iter))

print(len(feature_names_2[1]))for i in feature_names_2[1]:

print(i)

下面是在for循环里画多个子图的方法。对我来说,这里需要学习的有不少。比如

for i,k in enumerate(feature_names_2[1]):这一句老是记不住。

比如从列表中取出某元素所在的索引的方法:index1 = feature_names.index(k[0]),也即index = list.index(element)的形式。

比如for循环中画子图的方法:plt.subplot(2,3,1+i)比如for循环的下面这用法:for t,marker,c in zip(range(3),">ox","rgb"):plt.figure(1)for i,k in enumerate(feature_names_2[1]):

index1 = feature_names.index(k[0])

index2 = feature_names.index(k[1])

plt.subplot(2,3,1+i)for t,marker,c in zip(range(3),">ox","rgb"):

plt.scatter(features[target==t,index1],features[target==t,index2],marker=marker,c=c)

plt.xlabel(k[0])

plt.ylabel(k[1])

plt.xticks([])

plt.yticks([])

plt.autoscale()

plt.tight_layout()

plt.show()

这里的可视化效果如下:

20170531113320647.jpg

4. 画水平线和垂直线

比如在上面最后一幅图中,找到了一种方法可以把三种鸢尾花分出来,这是我们需要画出模型(一条直线)。这个时候怎么画呢?

下面需要注意的就是plt.vlines(x,y_min,y_max)和plt.hlines(y,x_min,x_max)的用法。plt.figure(2)for t,marker,c in zip(range(3),">ox","rgb"):

plt.scatter(features[target==t,3],features[target==t,2],marker=marker,c=c)

plt.xlabel(feature_names[3])

plt.ylabel(feature_names[2])# plt.xticks([])# plt.yticks([])plt.autoscale()

plt.vlines(1.6, 0, 8, colors = "c",linewidth=4,linestyles = "dashed")

plt.hlines(2.5, 0, 2.5, colors = "y",linewidth=4,linestyles = "dashed")

plt.show()

此时可视化效果如下:

20170531113350449.jpg

5. 动态画图

plt.ion()打开交互模式。plt.show()不再阻塞程序运行。

注意plt.axis()的用法。plt.axis([0, 100, 0, 1])

plt.ion()for i in range(100):

y = np.random.random()

plt.autoscale()

plt.scatter(i, y)

plt.pause(0.01)

可视化效果:

20170531113412137.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 未找到wifi适配器,无线 - 重新启动后找不到WI-FI适配器

问题:我已经成功安装了ubuntu 18.04.3 LTS,已经成功连接到无线网络,但是重新启动后,找不到wifi适配器,在每次重新启动时要重新安装wifi驱动程序很烦人,如果能帮帮我,将非常感激,网络…

在c语言中数组下标的最小值,数组元素下标的上限_c语言中,数组元素的下标下限为...

展开全部c语言中,数组元素的下标下限为0。数组中的各元素的存e69da5e887aa62616964757a686964616f31333431373230储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如&#…

python求矩形面积_关于python:创建矩形类

我真的不太懂课程,任何帮助都会很好。 矩形类应具有以下私有数据属性: __length __width Rectangle类应该有一个创建这些属性并将其初始化为1的__init__方法。它还应具有以下方法: set_length—此方法为__length字段赋值。 set_width—此方法…

linux epel7安装,在CentOS6.x或CentOS7.x上安装EPEL Repo,Extra Packages for Enterprise Linux (EPEL)...

在CentOS6.x或CentOS7.x上安装EPEL Repo,Extra Packages for Enterprise Linux (EPEL)Error: Cannot retrieve metalink for repository: epel. Please verify its path and try againReporepository,资源库,源的意思。RHEL EPEL(Extra Packages for Ent…

sparkstreaming 读取mysql_第十篇|SparkStreaming手动维护Kafka Offset的几种方式

Spark Streaming No Receivers 方式的createDirectStream 方法不使用接收器,而是创建输入流直接从Kafka 集群节点拉取消息。输入流保证每个消息从Kafka 集群拉取以后只完全转换一次,保证语义一致性。但是当作业发生故障或重启时,要保障从当前…

c语言程序设计题2015,2015年荐C语言程序设计等级考试习题汇编.doc

C语言程序设计等级考试习题汇编1、设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p; fl…

用了python之后笔记本卡了_应用

想参与时下最热门的话题讨论吗?看过这些2012最炙手可热的电影电视剧吗?想了解最新职场信息,轻松晋升职场达人么?……本应用为你精选了5个分类(经济、教育、娱乐、生活、科技)共150篇妙趣横生的时尚双语新闻, 7天时间完…

c语言tmplink,为了便于阅读,偿试把BLHeli的汇编源程序改成C语言格式

只是为了方便阅读和理解,所以未做详细的正确性检查。因为能力所限,程度中还是保留了很多跳转(goto)语句。主循环已经完成,发上来供大家参考int main(void){if(0 Prepare_Lock_Or_Fuse_Read() & 0x80){while(1);}Disable_Watchdog();Init…

anaconda 安装pytorch_conda上安装PyTorch

conda上安装PyTorch这里的安装系统:Windows系统第一步,打开Anaconda Prompt第二步,为pytorch创建一个环境:conda create -n pytorch python3.8(这里的pytorch是环境的名称,python3.8表示安装的是3.8版本的p…

c语言 自动化编译环境,《C编程.开始C》3.编译基础

在介绍了C编程的基本概念之后,我们现在可以简要地讨论编译过程。像任何编程语言一样,C本身对于微处理器来说是完全不可理解的。它的目的是提供一种用于人类是提供一种能够很容易地转换成机器代码指令以直观的方式是理解到微处理器。该编译器是什么翻译我…

curd什么意思中文_查英英字典:What a shame是什么意思?

查英英字典:What a shame是什么意思?“互联网”时代学习英语有两种“学习方法”:简单粗暴学法和自己动手丰衣足食法。一、简单粗暴法:直接问老师要“中文答案”在过去非互联网时代,“老师”往往是提供“答案”的唯一渠…

一维搜索进退法c语言程序,基于c语言黄金分割法优化设计.doc

基于c语言黄金分割法优化设计基于c语言黄金分割法优化设计【摘 要】 机械优化设计是适应生产现代化要求发展起来的一门崭新的学科。它是在现代机械设计理论的基础上提出的一种更科学的设计方法,它可使机械产品的设计质量达到更高的要求。基于黄金分割法提出的利用C语…

c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)

Python有很多种调c的方法,有的复杂有的简单,有时使用的时候反而不知道到底该用哪一种比较好,其实没有最好的方法,只有适合不适合自己。本文从我所遇到的问题说起,然后讲述另一种比较简单的python调c并且传参numpy矩阵的…

android四大组件的作用简书,Android四大组件是什么

Android四大组件是:活动、服务、广播接收器、内容提供商。它们的英文名称是ACTIVITY、SERVICE、BroadcastReceiver、Content Provider。四个组件分别起到不同的作用,相互配合才能确保安卓系统的正常运行,因此是缺一不可的。Android四大组件及…

python 获取文件大小_第41p,超级重要,Python中的os库

大家好,我是杨数Tos,这是《从零基础到大神》系列课程的第41篇文章,第二阶段的课程:Python基础知识:Python内置库之os库的使用。学习本课程,建议先看一遍:【计算机基础知识】课程。os模块是与操作…

android 多个textview,Android:多个textview像单个文本

需要格式化几个textview像一个又一个独特的文本块,有没有办法实现这个?Android:多个textview像单个文本这样__________________________| || || aaaaaa bbbbbbbbbbbbbbb || bbbbbbbbbb cccccc dddd || ddddddddddddd. || |我不能把TextView的…

惠普打印机节能环保认证证书_低成本高效办公 苏宁惠普超品日这几款打印机了解下!...

【PConline 导购】说到打印机,很多朋友会想到公司那台不停运转的打印机。其实,伴随着近几年来打印机技术的成熟,其打印成本也一降再降,这就让有打印的需求的中下型企业,甚至个人,都会去选购一款合适的打印产…

vm客户机隔离不能选_开汽车美容店,这些位置绝对不能选,会让你门可罗雀,生意惨淡...

之前的文章里,讲了一些开汽车美容店选址的要领,今天,来聊聊一些更加细致的选址要素,让你避免错误选址而导致生意不佳。门面宽度小于2.5米的不要选一辆普通汽车的宽度在1.8米-2米之间,加上两侧后视镜各20公分左右&#…

Android app 标签,android 获取APP的唯一标识applicationId的实例

使用getIdentifier()方法可以方便的获各应用包下的指定资源ID。方式一int indentify getResources().getIdentifier(“com.test.demo:drawable/icon”,null,null);第一个参数格式是:包名 : 资源文件夹名 / 资源名;是这种格式 然后其他的可以为null方式…

markdown格式_第1篇:如何将Markdown笔记转入ANKI复习? | 学习骇客

用技术和心理学改善学习 第128次摘要:将日常使用的Markdown笔记软件与复习工具ANKI结合起来,于ANKI用户而言可以简化学习过程,于一般的学习者而言可以解决笔记“记而不学”的问题。本文摘选自视频课程《复习的技术,跟LEO学ANKI》(…