画图从零开始

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

相关文章

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

Windows11电脑上自带的画图软件修改照片大小(不裁剪尺寸的情况下)

针对一张图片,有时候上传的图片有大小限制,那么在这种情况下如何修改其大小呢,在不裁剪尺寸的情况下 步骤如下: 1.选定一张图片,右击->打开方式->画图,如下: 第二步:打开图片后,我们可以看到图片的大小为82.1kb,点击上面工具栏的“重设大小和倾斜”进行调整,如下: 第三步:修改水平和垂直的数字,此处我修改为分别都修改为50,然后保存,可以看到大小变成63.5kb,如下:

从零开始学习JVM(七)- StringTable字符串常量池

1 概述 String应该是Java使用最多的类吧,很少有Java程序没有使用到String的。在Java中创建对象是一件挺耗费性能的事,而且我们又经常使用相同的String对象,那么创建这些相同的对象不是白白浪费性能吗。所以就有了StringTable这一特殊的存在,StringTable叫做字符串常量池,用于存放字符串常量,这样当我们使用相同的字符串对象时,就可以直接从StringTable

从零开始构建大语言模型并进行微调:全面指南

要从0开始搭建并训练一个大语言模型(LLM),涉及到多个步骤和资源,包括理论理解、工具使用、数据准备、模型训练与微调。以下是一个从基础到应用的指南,帮助你理解并逐步实现这一目标。 1. 理解基础概念 在开始搭建大语言模型之前,了解以下基本概念至关重要: 生成式AI:通过大语言模型生成自然语言文本,例如GPT、BERT等。机器学习:通过数据训练模型,使其具备从数据中学习规律的能力。深度学习:机

如何使用 Python 读取 Excel 文件:从零开始的超详细教程

“日出东海落西山 愁也一天 喜也一天 遇事不钻牛角尖” 文章目录 前言文章有误敬请斧正 不胜感恩!||Day03为什么要用 Python 读取 Excel 文件?准备工作:安装所需工具安装 Python安装 Pandas安装 openpyxl 使用 Pandas 读取 Excel 文件什么是 Pandas?读取 Excel 文件的简单示例查看数据的前几行选择特定工作表只读取部分列跳过

【虚拟机/服务器】在Ubuntu Server上从零开始配置Nginx、Mysql、PHP7.0

1、升级当前系统数据源 sudo apt-get update && sudo apt-get upgrade 遇到询问是否继续,输入 y 或直接回车继续就好了 2、安装 Nginx sudo apt-get install nginx 安装完成之后就会默认自动开启 Nginx 服务器,可以通过 ps -ef | grep nginx 查看。 3、配置 Nginx 环境 1)替换默认

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

从零开始学cv-14:图像边缘检测

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、图像边缘是什么?二、Sobel 算子三、Scharr 算子四、Prewitt算子五、Canny算子 前言 边缘检测是OpenCV中的一个重要组成部分,它用于识别图像中亮度变化显著的点,即边缘。通过边缘检测,我们可以从图像中提取出重要的特征,为后续的图像分析、形状识别和物体跟踪等任务奠定