画图从零开始

2024-06-15 17:32
文章标签 从零开始 画图

本文主要是介绍画图从零开始,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2018/03/17
时隔一年又重新开始捡起来机器学习的东西,还是从最简单的画图开始吧。


当然数据集还是从iris开始。
还是在服务器上运行,这部分还是使用原来的那个命令,引入后执行use('Agg')保证可以保存。
从官方文档处学习:http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html#sphx-glr-auto-examples-datasets-plot-iris-dataset-py

version_0:最简单的版本,加载数据后,直接使用plt的默认画图。

1 #! /bin/python2 #coding:utf-83 #2018/03/174 #Author:VChao5 6 import matplotlib7 matplotlib.use('Agg')8 9 10 import matplotlib.pyplot as plt11 from sklearn import datasets12 13 14 def main():15     iris = datasets.load_iris()16     x = iris.data[:,:2]17     y = iris.target18 19     plt.scatter(x[:,0],x[:,1],c = y)                                 20     plt.savefig("start1.png")21 22 23 24 if __name__ == "__main__":25     main()

途中的标号是从vim里面直接带过来的,带着也没什么不好看,就呆着吧。
结果如图:


version_0

缺点:没有标题,没有各个轴的名称

version_1:增加标题,和轴名称

version_1

因为这个测试对相应轴的数量值并不敏感,想办法去掉。

version_2:简单修改坐标轴样式

最终版本代码:

1 #! /bin/python2 #coding:utf-83 #2018/03/174 #Author:VChao5 6 import matplotlib7 matplotlib.use('Agg')8 9 10 import matplotlib.pyplot as plt11 from sklearn import datasets12 13 14 def main():15     iris = datasets.load_iris()16     x = iris.data[:,:2]17     y = iris.target18 19     plt.scatter(x[:,0],x[:,1],c = y)20 21 22     plt.xlabel("Sepal length")23     plt.ylabel("Sepal width")24     plt.title("Hello")25 26     #Make the x line like27     plt.xticks(())28     plt.yticks(())29 30 31                                                                      32     33     plt.savefig("start1.png")34 35 36 37 38 if __name__ == "__main__":39     main()40
version_2

对于个这个点的样式还是可以修改的。后续一点一点修改。

现在单个图的样式已经完成了,但是如果去构造多个图呢,不能说一个一个脚本去写对吧,肯定是从一个图里面,看到多个属性。

version_3:多个图绘制在一起。这里一共是四个属性。正常应该是6个图

如果是说你一个一个的去画,这个工作实在是太繁琐了。当然可能说,以后遇见的数据比较奇葩,各个图本身就不是一样的东西,那就每个单独去画。这里东西还是比较好的,那就最好是函数式编程

http://blog.topspeedsnail.com/archives/760
上面这个网址是一些子图的绘画方式,这个子图是用subplot,暂且不去关注到底是什么样的方式,先学会一种再说。

http://blog.csdn.net/cdqn10086/article/details/72403899图片大小,设置的时候,一定要在最开始初始化得时候就去弄,你的其他命令可能是新建了另一个画图。比如错误:

plt.figure(figsize=(10,10))
fig,ax = plt.subplots(nrows=2,ncols=3)

https://www.cnblogs.com/nju2014/p/5620776.html这里具体讲述了这个关系。
这个过程应该说还是挺复杂的,不过最后这个图还算是可以接受。

1 #! /bin/python2 #coding:utf-83 #2018/03/174 #Author:VChao5 6 import matplotlib7 matplotlib.use('Agg')8 9 10 import matplotlib.pyplot as plt11 from sklearn import datasets12 13 14 att_array = [[0,1],[0,2],[0,3],15              [1,2],[1,3],[2,3]]16 17 fig,ax = plt.subplots(figsize=(10,7.5),nrows=2,ncols=3)18 19 def scatter_plt(i,x,y,t,one_ax,x_comment,y_comment):20     #row X col -> sub figure nums21     #i         -> the num of nums,cordinate with the plt.subplot22     #x,y,t     -> x axis ,y axis data ,t target23 24     #plt.figure(6 -i,figsize=(8,6))25     #plt.clf()26     one_ax.scatter(x,y,c=t)27     one_ax.set_xticks(())28     one_ax.set_yticks(())29     one_ax.set_xlabel(x_comment)30     one_ax.set_ylabel(y_comment)                                     31 32 33 def main():34     iris = datasets.load_iris()35 36     for i in range(len(att_array)):37         pass38         x = i % 2;39         y = i % 3;40         x_comment = iris.feature_names[att_array[i][0]]41         y_comment = iris.feature_names[att_array[i][1]]42         scatter_plt(i,iris.data[:,att_array[i][0]],43                       iris.data[:,att_array[i][1]],44                       iris.target,ax[x][y],x_comment,y_comment)45 47     plt.savefig("mul.png")48 52 if __name__ == "__main__":53     main()

效果图:


mul_plot

这里还差一点,图例。不过这里要明白一件事,就是我这个图例应该是所有子图都通用的,那么就应该是在figure这个对象上。初步理解,
不过查了挺多资料以后感觉,我这个环境下下面,添加图例有点小困难。
他们网上都是每次都是不一样的画图然后得到的这个不同的图例,而我是直接利用他自己的参数直接穿进去不同的东西了。也就是这个得到标签的中间代码没有写。

带图例

图例的位置可以继续修改,这里就不进行修改了。

1 #! /bin/python2 #coding:utf-83 #2018/03/174 #Author:VChao5 6 import matplotlib7 matplotlib.use('Agg')8                                                                      9 import matplotlib.pyplot as plt10 from sklearn import datasets11 12 13 att_array = [[0,1],[0,2],[0,3],14              [1,2],[1,3],[2,3]]15              16 fig,ax = plt.subplots(figsize=(10,7.5),nrows=2,ncols=3)17 18 tmp1 = None19 tmp2 = None20 tmp3 = None21 22 def scatter_plt(i,x,y,t,one_ax,x_comment,y_comment):23     #row X col -> sub figure nums24     #i         -> the num of nums,cordinate with the plt.subplot25     #x,y,t     -> x axis ,y axis data ,t target26     27     #plt.figure(6 -i,figsize=(8,6))28     #plt.clf()29     global tmp1,tmp2,tmp330     tmp1 = one_ax.scatter(x[:50],y[:50],c="red",label="so")31     tmp2 = one_ax.scatter(x[50:100],y[50:100],c="blue",label="xx")32     tmp3 = one_ax.scatter(x[100:150],y[100:150],c="green",label="xx")33     34     one_ax.set_xticks(())35     one_ax.set_yticks(())36     one_ax.set_xlabel(x_comment)37     one_ax.set_ylabel(y_comment)38     39 def main():40     iris = datasets.load_iris()41     42     for i in range(len(att_array)):43         pass 44         x = i % 2;45         y = i % 3;46         x_comment = iris.feature_names[att_array[i][0]]47         y_comment = iris.feature_names[att_array[i][1]]48         scatter_plt(i,iris.data[:,att_array[i][0]],49                       iris.data[:,att_array[i][1]],50                       iris.target,ax[x][y],x_comment,y_comment)51                       52     fig.legend((tmp1,tmp2,tmp3),["F","Y","X"],loc=2)53     plt.savefig("mul.png")54     55 if __name__ == "__main__":56     main()57

不过这样的代码感觉挺难看的。!!,不如一开始的那个简洁明了。
可能还有别的办法去获取。


对于画图就先到这个底部,后续再继续进行不足。其实后续大框架已经打好了,只需要配置到相应的图像就可以了。
2018/03/18
那本书《python机器学习系统设计》吧,好像是,比我处理的这个过程更好,主要他把数组处理的过程更加简化了。!!
后续再进行添加。
2018/03/24
对于多附图的代码,通过动态添加的方式会比上面这个更好。
https://www.jianshu.com/p/3edb07f58ecd

这篇关于画图从零开始的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064108

相关文章

Android从零开始搭建MVVM架构(5)—— LifeCycle详解

1.Lifecycle简介 为什么要使用lifecycle? activity 和fragment 是有声明周期的,有时候,我们的很多操作需要写在声明周期的方法中,比如,下载,文件操作等,这样很多情况下回导致,我们在activity中的声明周期方法中写越来越多的代码,activity或者fragment 越来越臃肿,代码维护越来越困难。 使用lifecycle就可以很好的解决这类问题。 lifec

Android从零开始搭建MVVM架构(4)——LiveData

LiveData 介绍 Livedata 是 Google 推荐的 Android 架构组件之一,是一个存放可被观察的数据持有类,有生命周期感知功能,解决了android开发者需要去手动处理生命周期的痛点。 比如当我们使用 Retrofit+Rxjava处理接口回调数据时,需要考虑activity 或 fragment 生命周期,以解决 onStop 或 onDestory之后回调数据的问题。现

Android从零开始搭建MVVM架构(3)——ViewModel

ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据,ViewModel中数据会一直存活即使 activity configuration发生变化。 ViewModel有什么优势? 1.数据持久化 activity 在销毁重建时,之前我们可以用 activity 的onSaveInstanceState()机制保存和恢复数据,但缺点很明显,onSaveInstan

React+TS 从零开始教程(2):简中简 HelloWolrd

源码链接:https://pan.quark.cn/s/c6fbc31dcb02 这一节,我们来见识React+TS的威力,开始上手开发第一个组件,什么组件呢? 当然是简中简的 HelloWolrd组件啦。 在src下创建一个components,然后新建Hello.tsx 为什么是tsx呢,这个目的就是告诉编译器,我这个文件是支持jsx语法的,如果遇到你看不懂的标签,就当作React Ele

从零开始学数据结构系列之第三章《平衡二叉树基础概念》

文章目录 前言什么是平衡二叉树往期回顾 前言 ​   在前面的学习过程中,我们了解到二叉排序树可以在一定程度上提高查找(搜索)的效率,但仍然会出现特殊情况,让二叉排序树失效。例如,将序列{1,2,3,4,5,6}中的元素依次插入到二叉排序树中,会得到右斜树,这就相当于一个单链表了,搜索效率降低为O(n)。   于是在 1962 年,一个姓 AV 的大佬(G. M. Ade

从零开始搭建一个酷炫的个人博客

效果图 一、搭建网站 git和hexo准备 注册GitHub本地安装Git绑定GitHub并提交文件安装npm和hexo,并绑定github上的仓库注意:上述教程都是Windows系统,Mac系统会更简单! 域名准备 购买域名,买的是腾讯云域名,购买完成之后的域名管理解析域名域名备案 二、优化网站 使用的Fluid主题,Hexo Fluid 用户手册 增加图床,图片可以放在g

开源C++版AI画图大模型框架stable-diffusion.cpp开发使用初体验

stable-diffusion.cpp是一个C++编写的轻量级开源类AIGC大模型框架,可以支持在消费级普通设备上本地部署运行大模型进行AI画图,以及作为依赖库集成的到应用程序中提供类似于网页版stable-diffusion的功能。 以下基于stable-diffusion.cpp的源码利用C++ api来开发实例demo演示加载本地模型文件输入提示词生成画图,这里采用显卡CUDA加速计算,

【GD32】从零开始学兆易创新32位微处理器——RTC实时时钟+日历例程

1 简介 RTC实时时钟顾名思义作用和墙上挂的时钟差不多,都是用于记录时间和日历,同时也有闹钟的功能。从硬件实现上来说,其实它就是一个特殊的计时器,它内部有一个32位的寄存器用于计时。RTC在低功耗应用中可以说相当重要,因为在使用外部低速晶振的条件下,它在所有的低功耗模式下都可以工作,这使得RTC很适合实现芯片的低功耗唤醒。下面是RTC的框图。 咋一看RTC的内部还挺复杂的。 2 硬件时

spark graphx 图结构 画图/可视化

所需的包: maven包:<!--&lt;!&ndash; https://mvnrepository.com/artifact/org.graphstream/gs-core &ndash;&gt;--><dependency><groupId>org.graphstream</groupId><artifactId>gs-core</artifactId><version>1.2</ver

从零开始的Ollama指南:部署私域大模型

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor