Python 绘制图表之我见 ---一个java程序员的看法
----------------
环境:
win 10 . python3.5
https://github.com/Leechen2014/1400OS_01_Codes/blob/master/src/analyze_webstats.py
-----------------
前言:
在学些java的GUI编程过程中,给我印象最深的有三点:
1) 所有与‘绘制’相关的方法应该在show() 方法调用之前调用
2) java 语言中会继承/调用一个与绘图相关的对象(JFrame之类)来处理’绘制‘ 工作
3) java中的GUI程序都是一层一层的panel 嵌套实现的。
这三点小小的编程经验,会对python的图表制作有一定的帮助。
对于科研工作的小白菜来说,绘图往往是实验报告的重点。 因此很多人会喜欢matlab , python 这种方便的语言做为数学和科学处理工具。 我本人是学软件开发出身的,接触的第一门语言是面向对象的语言--java。 首次接触python, 还没有搞懂里面的套路。希望借此博文作为学习笔记.
不多说., 先上图:
这是我们要实现的效果图。
首先看看一个默认plt对象调用show()方法的效果:( 2) java 语言中会继承/调用一个与绘图相关的对象(JFrame之类)来处理’绘制‘ 工作 python 中的plt也是可以看做一个对象的, 在调用show()的时候帮我们实现很多细节,比如这个程序的Title )
下面开始讲解绘制图图片的套路。
导入所需要的包:
我们绘图所使用的工具是 matplotlib , 这个工具中的很多方法和matlab类似。
如果我们能、还需要对数据进行科学处理。那么numpy也要导入。
同时我们为了保存文件,需要调用一些操作系统级的命令,所以也会使用os
所以首先会:
import os
import matplotlib.pyplot as plt
import numpy as np
导入之后, 假设我们已经有了数据:
Xdata = [512, 1536, 2048, 3072, 4096, 4608, 5632, 6144, 7168, 8192, 9216, 9728, 10752, 11776, 12800, 14336, 15360,
17408, 27990]
Ydata = [1.1285, 1.5314, 1.2771, 0.9415, 0.7562, 0.6966, 0.597, 0.5559, 0.5, 0.4706, 0.4302, 0.4123, 0.3807, 0.3559,
0.3419,
0.3147, 0.299, 0.2741, 0.2008]
同时我们也知道了plt的一些基本函数:
plt.clf() 清除当前的图表
plt.title('1') 为图表设置标题为1
plt.xlabel('samples') 设置图表中x轴的名称为samples
plt.ylabel('loss value') 设置图表中y轴的单位名称 loss value
plt.ylim(ymin=0) 设置y 的最小值
plt.ylim(ymax=2) 设置y轴的最大值
plt.savefig(fname) 保存图像 ,fname是图表的绝对路径。
plt.show() 显示当前的图像。
知道了这些方法还不够 ,最多可以实现下图的效果。 毕竟我们还不知道数据是如何‘画在图表’上的。
这个效果似乎还是不够好,. 我们希望可以在图表plt上有参考线:
plt.grid(True, linestyle='-', color='0.75') # 句话应该贼show()方法调用之前调用,因为
:所有与‘绘制’相关的方法应该在show() 方法调用之前调用
有了这个之后, 我们最好绘制出点:
plt.scatter(x, y, marker ='*')# 将x[],y[] 数组中的(x[i],y[i]) 作为一个坐标点绘制到图标上,并且使用* 号做点的标记
或者
plt.plot(x, y, 'r') # 将x[],y[] 数组中的(x[i],y[i]) 作为一个坐标点绘制到图标上,并且使用红色的线连接
同上,还有还有很多默认的参数可以指定。plt.plot(x, y, linestyle=lineStyles[0], linewidth=1.5, c=colors[0]) # plot point
这两句话可以一起调用:
plt.scatter(x, y, marker ='*')
plt.plot(x, y, linestyle=lineStyles[0], linewidth=1.5, c=colors[0]) # plot point
效果如下:
有没有发现之前画出的红色的线被绿色的线覆盖了,
这点很像(java中的GUI程序都是一层一层的panel 嵌套实现的。)
细心的你一定还会发现 在图表的右上角有每一条先线的标志
plt.legend(["d=%i" %m for m in [1,2,3]], loc="upper left")
# 这句话会将每一个图表标志放在右上角,并且给每一图表起名字为 1 2 3
最后:
plt.savefig(fname) ## 保存图像
最后关于绘制网格线 还可以使用
plt.xticks(x) x是即将绘制的网格线的向量
plt.yticks(y) y是即将绘制网格线的y轴的向量
Python 绘制图表之我见 ---一个java程序员的看法的更多相关文章
- 做为一个Java程序员,你需要哪些傍身的技能?
最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己······· 工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变 ...
- 0~5年一个Java程序员的晋升之路
在程序界流行着一种默认的说法叫“黄金5年”,也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向,如何走好这5年,彻底从一个刚入行的菜鸟蜕变成可以以不变应万变 ...
- 文章推荐一个Java程序员跟大家谈谈从业心得
一个Java程序员跟大家谈谈从业心得 2017-10-21 java那些事 java那些事 java那些事 微信号 csh624366188 功能介绍 分享java开发中常用的技术,分享软件开发中各种 ...
- 一个JAVA程序员成长之路分享
我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但好在现在也已经成家立业, 小日子过的还算滋润, 起码顶得住一月近万元的吃喝拉 ...
- 正式工作的前奏——一个Java程序员的实习总结(1)
不知不觉,到深圳实习已经三个礼拜了.跟在暑假的三个半月实习不一样,这次收获更多,感受更好,算是摆脱了那次实习给我带来的阴影(这个会放到以后才说). 在知乎上,有这么一个问题,你现在最想跟刚工作时的你说 ...
- 一个java程序员的年终总结
年底了,该给自己写点总结了! 从毕业到现在已经快4年啦,一直在Java的WEB开发行业混迹.我不是牛人,但是自我感觉还算是个合格的程序员,有必要写下自己将近4年来的经历,给自我以提示,给刚入行的朋友提 ...
- 一个Java程序员该有的良好品质
一.前言 多年来,在IT领域,从一个普通的程序员到一个技术主管,再到一个技术经理,再到一个技术主管,他们践踏了许多坑,劳累了许多课程,还背着许多罐子.在提高他们的技术和管理能力的同时,他们一直在考虑如 ...
- 一个Java程序员的实习总结(2)
在今天的总结里,主要讲述第二.三周这半个月的培训情况,并且穿插讲讲我对实习和见习的看法,有需要有兴趣的童鞋可以看看. 半个月的见习 其实我更愿意把实习和见习分开讲,实习指的是还没签三方或者直接就是大三 ...
- Java入门基础学习,成为一个Java程序员的必备知识
引言 众所周知,Java是一种面向对象的编程语言.您可以在Windows操作系统上编写Java源代码,而在Linux操作系统上运行编译后的字节码,而无需修改源代码. 数据类型 Java 有 2 种数据 ...
随机推荐
- IBM WebSphere MQ的oracle的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- C#控制台项目更改运行文件
这个是极光推送的C# demo,里面有几个文件,要先后运行.这是第一次遇见,所以一下子找不到北,摸索了好一会儿才知会.于是做了这面一个记录. 右击鼠标,查看属性弹出这个这面,然后选择要启动的对象.保存 ...
- Bitnami Redmine插件记录
1.bitnami安装时自带了开发环境,如ruby.rails.devkit. 为了版本兼容,应使用bitnami的命令行. 2.通过use_redmine启动命令行:运行Bitnami\redmin ...
- CSS3 笔记三(Shadow/Text/Web Fonts)
CSS3 Shadow Effects text-shadow box-shadow 1> text-shadow The text-shadow property adds shadow to ...
- JSON总结
JSON: 关于JSON,最重要的是要理解它是一种数据格式,不是一种编程语言.虽然JSON与JavaScript具有相同的语法形式与JSON具有相同的语法形式,但JSON并不从属于JavaScrip ...
- cocos2d-x视频控件VideoPlayer的用户操作栏进度条去除(转载)
目前遇到两个问题: (1)视频控件移除有问题,会报异常. (2)视频控件有用户操作栏,用户点击屏幕会停止视频播放. 对于第一个问题,主要是移除控件时冲突引起的,目前简单处理是做一个延时处理,先stop ...
- Oracle数据库的表结构 简单表的建立
- Promise对象
1.Promise思想:每一个异步任务立刻返回一个Promise对象,由于是立刻返回,所以可以采用同步操作的流程.这个Promises对象有一个then方法,允许指定回调函数,在异步任务完成后调用. ...
- 在dede:arclist、dede:list等标签中调用附加字段
{dede:list perpage='20'} <div class="f-con01"> <div class="f-con01-l"&g ...
- 使用ajax分页
前台页面: <table class="table table-hover"> <thead> <tr> <th class='hidde ...