python-learning-第二季-画图matplotlib
https://www.bjsxt.com/down/8468.html
绘制方法:
绘制直线:
- #coding:utf-
- import matplotlib.pyplot as plt
- #准备绘制的两个点(,),(,)
- #调用绘制的plot方法
- plt.plot([,], [,]) #两个点的x和y写在一起
- #显示绘制的图
- plt.show()
返回:
绘制折线图
- #coding:utf-
- import matplotlib.pyplot as plt
- x = [,,,,]
- y = [,,,,]
- #调用绘制的plot方法
- plt.plot(x, y) #两个点的x和y写在一起
- #显示绘制的图
- plt.show()
返回:
开始学习-设置样式
windows不支持中文,添加:
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
macos不支持中文,可见mac中matplotlib不支持中文的解决办法
运行的时候为:
- #coding:utf-8
- import matplotlib.pyplot as plt
- x = [1,2,3,4,5]
- y = [1,4,9,16,25]
- #调用绘制的plot方法
- plt.plot(x, y, linewidth=5)
- plt.xlabel('x')
- plt.ylabel('y=x^2')
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
- #添加标题
- plt.title('多个点绘制折线图') #会出现乱码
- #显示绘制的图
- plt.show()
就成功了:
绘制曲线:
- #coding:utf-
- import matplotlib.pyplot as plt
- x = range(-, )
- y = [i** for i in x]
- #调用绘制的plot方法
- plt.plot(x, y, linewidth=)
- plt.xlabel('x')
- plt.ylabel('y=x^2')
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
- #添加标题
- plt.title('多个点绘制折线图') #会出现乱码
- #保存成图片
- plt.savefig('result') #默认格式是png,可以指定为jpg格式result.jpg
- #显示绘制的图
- plt.show()
返回:
正弦和余弦曲线
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- #-10之间100个等差数
- x = np.linspace(,,)
- y = np.sin(x)
- #调用绘制的plot方法
- plt.plot(x, y, linewidth=)
- cos_y = np.cos(x)
- plt.plot(x, cos_y, linewidth=)
- #显示绘制的图
- plt.show()
返回:
subplot的使用:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- #-10之间100个等差数
- x = np.linspace(,,)
- y = np.sin(x)
- plt.subplot(,,)
- #调用绘制的plot方法
- plt.plot(x, y, linewidth=)
- cos_y = np.cos(x)
- plt.subplot(,,)
- plt.plot(x, cos_y, linewidth=)
- y_line = [i** for i in x]
- plt.subplot(,,)
- plt.plot(x, y_line, linewidth=)
- #显示绘制的图
- plt.show()
返回:
修改某一个画布的x轴的坐标:
plt.xlim(-5,20) : x轴
plt.ylim(-5,20) : y轴
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- #-10之间100个等差数
- x = np.linspace(,,)
- y = np.sin(x)
- plt.subplot(,,)
- #调用绘制的plot方法
- plt.xlim(-,)
- plt.plot(x, y, linewidth=)
- #显示绘制的图
- plt.show()
返回:
绘制散点图
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- #-10之间100个等差数
- x = np.linspace(,,)
- y = np.sin(x)
- #调用绘制的plot方法
- plt.scatter(x, y, linewidth=)
- #等价于
- #plt.plot(x, y, 'o')
- #显示绘制的图
- plt.show()
返回:
⚠️plot绘制图形的速度由于scatter,所以如果画一堆点,而且点的形式没有差别,那么就使用plot;如果点的形式有差别,即点的大小和颜色有差别时,则必须使用scatter
点大小颜色不同的情况
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- #10中大小,100种颜色的散点图
- #使得执行多次,每次获得的随机数都相同
- np.random.seed()
- #100个随机点
- x = np.random.rand()
- y = np.random.rand()
- #颜色的类别数量要等于点的个数
#大小则没有要求- #设置10种大小,值过小,所以乘500
- size = np.random.rand()*
- #生成100种颜色
- color = np.random.rand()
- #调用绘制的plot方法,alpha表示透明度,使得重叠的部分可见
- plt.scatter(x, y, s=size, c=color, alpha=0.7)
- #等价于
- #plt.plot(x, y, 'o')
- #显示绘制的图
- plt.show()
返回:
当点的个数大于大小的个数时,循环设置。因为有10种大小,所以第一个点和第11个点是大小一样的,以此类推
绘制不同样式不同颜色的线条
还有其他的
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- x = np.linspace(,,)
- plt.plot(x, x+, '--g')
- plt.plot(x, x+, '-.r')
- plt.plot(x, x+, ':b')
- plt.plot(x, x+, '.k')
- plt.plot(x, x+, ',c')
- plt.plot(x, x+, '*y')
- #显示绘制的图
- plt.show()
返回:
添加图例legend():
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- x = np.linspace(,,)
- #使用legend()图例,给plot方法添加参数label
- plt.plot(x, x+, '--g', label='--g')
- plt.plot(x, x+, '-.r', label='-.r')
- plt.plot(x, x+, ':b')
- plt.plot(x, x+, '.k')
- plt.plot(x, x+, ',c')
- plt.plot(x, x+, '*y')
- plt.legend(loc='lower right') #默认位置在左上角loc='upper left',使用参数loc修改为右下角
- #显示绘制的图
- plt.show()
返回:
还有其他配置参数:
透明度就是当图例遮住图时,能够透过看到线条
绘制柱状图
bar的宽度的说明:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- x = [, , , ]
- y = [, , , ]
- #设置为原来柱宽的三倍
- plt.bar(x, y, width=)
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC']
- #修改x坐标的值
- x_label = ['1980年', '1985年', '1990年', '1995年']
- plt.xticks(x, x_label) #即x轴坐标就只有x设置的这4个值了
- #给x、y坐标加名称
- plt.xlabel('年份')
- plt.ylabel('销量')
- plt.title('根据年份销量对比图')
- #显示绘制的图
- plt.show()
返回:
bar和barh函数的使用
barh:水平方向绘制
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- np.random.seed()
- x = np.arange()
- y = np.random.randint(-,,)
- #将画布分成1行2列
- #第一个区域画bar
- plt.subplot(,,)
- #添加颜色
- plt.bar(x,y, color='blue')
- #在0位置添加蓝色的线条
- plt.axhline(, color='blue', linewidth=)
- #第一个区域画barh,即x,y对换
- plt.subplot(,,)
- plt.barh(x,y, color='red')
- plt.axvline(, color='red', linewidth=)
- #显示绘制的图
- plt.show()
返回:
正值为一种颜色,负值为另一种颜色:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- np.random.seed()
- x = np.arange()
- y = np.random.randint(-,,)
- v_bar= plt.bar(x,y, color='blue')
- #将y值大于0的设置为蓝色,小于0的设置为绿色
- #遍历v_bar对象
- #zip()将v_bar和y对应的值对应在一起,通过y的值判断柱的颜色
- for bar, height in zip(v_bar, y):
- if height<:
- bar.set(color='green')
- #显示绘制的图
- plt.show()
返回:
柱状图使用实例:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- #准备数据
- #三部电影的名称
- real_names = ['千与千寻', '玩具总动员', '黑衣人:全球通缉']
- #3天票房,三天排名是不同的
- real_num1 = [, , ]
- real_num2 = [, , ]
- real_num3 = [, , ]
- x = np.arange(len(real_names))
- #绘制柱状图,alpha参数用于显示重叠部分,本来默认为重叠的
- plt.bar(x, real_num1, alpha=0.5)
- plt.bar(x, real_num2, alpha=0.5)
- plt.bar(x, real_num3, alpha=0.5)
- #显示绘制的图
- plt.show()
返回:
最后:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC']
- #准备数据
- #三部电影的名称
- real_names = ['千与千寻', '玩具总动员', '黑衣人:全球通缉']
- #3天票房,三天排名是不同的
- real_num1 = [, , ]
- real_num2 = [, , ]
- real_num3 = [, , ]
- x = np.arange(len(real_names))
- #绘制柱状图,alpha参数用于显示重叠部分,本来默认为重叠的
- #为了让他们不重叠,而是放在旁边,设置为[i+width for i in x]
- width = 0.3
- plt.bar(x, real_num1, alpha=0.5, width=width, label=real_names[])
- plt.bar([i+width for i in x], real_num2, alpha=0.5, width=width, label=real_names[])
- plt.bar([i+*width for i in x], real_num3, alpha=0.5, width=width, label=real_names[])
- #添加图例
- plt.legend()
- #设置x的坐标的值,第一天、第二天、第三天
- #为了放在中间,设置为[i+width for i in x]
- x_label= ['第{}天'.format(i+) for i in x]
- plt.xticks([i+width for i in x],x_label)
- plt.ylabel('票房数')
- plt.title('3天3部电影票房数')
- #显示绘制的图
- plt.show()
返回:
饼状图
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC']
- #准备男生、女生人数及比例
- man =
- woman =
- man_perc = man/(man+woman)
- woman_perc = woman/(man+woman)
- #添加名称
- labels = ['男','女']
- #添加颜色
- colors = ['blue', 'red']
- #explode=(,0.05) 将图中间设置一个分裂线
- #autopct='%0.1f%%' 显示比例并设置比例显示格式
- #paches, texts是labels字体, autotexts是比例字体
- paches, texts, autotexts = plt.pie([man_perc, woman_perc], labels=labels, colors=colors, explode=(,0.05), autopct='%0.1f%%')
- #修改字体颜色
- for text in autotexts:
- text.set_color('white')
- #设置字体大小
- for text in texts:
- text.set_fontsize()
- #显示绘制的图
- plt.show()
返回:
直方图——关注分布状态
柱状态关注具体的某个值
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC']
- #生成1000个标准正太分布随机数
- x = np.random.randn()
- #bins=, 表示将10个柱放在一起,这样柱子的宽度就比较小了
- plt.hist(x, bins=)
- #显示绘制的图
- plt.show()
返回:
还有normal方法指定期望和正态分布:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- #不支持中文的解决办法
- plt.rcParams['font.sans-serif']=['Songti SC']
- #生成1000个,normal方法指定期望和正态分布
- x = np.random.normal(,0.8,)
- y = np.random.normal(-,,)
- z = np.random.normal(,,)
- #alpha为(,)
- kwargs = dict(bins=, alpha=0.5)
- #bins=, 表示将10个柱放在一起,这样柱子的宽度就比较小了
- #plt.hist(x, **kwargs)等价于plt.hist(x, bins=)
- #这样当设置的参数多时,就不用回一个个都写一遍,写一次即可
- plt.hist(x, **kwargs)
- plt.hist(y, **kwargs)
- plt.hist(z, **kwargs)
- #显示绘制的图
- plt.show()
返回:
绘制等高线和三维图
所以100个x和100个y的相交点有10000个
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- import numpy as np
- #创建x,y
- x = np.linspace(-, , )
- y = np.linspace(-, , )
- #计算x,y的相交点
- X, Y = np.meshgrid(x,y)
- Z = np.sqrt(X**+Y**)
- plt.contour(X,Y,Z)
- #显示绘制的图
- plt.show()
即哪些x和y相交的点计算得到的Z值是相同的,就连起来画成等高线
返回:
还有plt.contourf(X,Y,Z)会填充:
三维图
还要导入3D包:
- #coding:utf-
- import numpy as np
- import matplotlib.pyplot as plt
- #导入3D包
- from mpl_toolkits.mplot3d import Axes3D
- X = [,,,]
- Y = [,,,]
- Z = [,,,]
- #该图对象
- figure = plt.figure()
- #创建Axes3D对象
- ax = Axes3D(figure)
- ax.plot_trisurf(X,Y,Z)
- #显示绘制的图
- plt.show()
返回:
python-learning-第二季-画图matplotlib的更多相关文章
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇
始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...
- 一起做RGB-D SLAM 第二季 (一)
小萝卜:师兄!过年啦!是不是很无聊啊!普通人的生活就是赚钱花钱,实在是很没意思啊! 师兄:是啊…… 小萝卜:他们都不懂搞科研和码代码的乐趣呀! 师兄:可不是嘛…… 小萝卜:所以今年过年,我们再做一个S ...
- 【Python学习笔记】调整matplotlib的图例legend的位置
有时默认的图例位置不符合我们的需要,那么我们可以使用下面的代码对legend位置进行调整. plt.legend(loc='String or Number', bbox_to_anchor=(num ...
- 《舌尖上的中国》第二季今日首播了,天猫食品也跟着首发,借力使力[bubuko.com]
天猫旗下的天猫食品与央视CCTV-1栏目<舌尖上的中国>第二季(以下简称“舌尖2”)达成合作,天猫食品成为舌尖2独家合作平台,同步首发每期 节目中的食材和美食菜谱,舌尖2摄制组还将为同步上 ...
- python课程第二周重点记录
python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...
- JAVA入门第二季(mooc-笔记)
相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第二季&g ...
- Big Data 應用:第二季(4~6月)台湾地区Game APP 变动分布趋势图
图表简介: 该示意图表示了台湾地区第二季内所有Game APP类别的分布情形,经由该图表我们可以快速的了解到在这三个月内,哪类型的APP是很稳定:抑或者哪类型的APP是非常不稳定的. 名词解释: 类别 ...
- 再造轮子之网易彩票-第二季(IOS 篇 by sixleaves)
02-彩票项目第二季 2.封装SWPTabBar方式一 接着我们思考如何进行封装.前面已经将过了为什么要封装, 和封装达到的效果.这里我们主要有两种封装方式,分别是站在不同的角度上看待问题.虽然角度不 ...
- QQ聊天界面的布局和设计(IOS篇)-第二季
QQChat Layout - 第二季 本来第二季是快写好了, 也花了点功夫, 结果gitbook出了点问题, 给没掉了.有些细节可能会一带而过, 如有疑问, 相互交流进步~. 在第一季中我们完成了Q ...
随机推荐
- P1402 酒店之王[网络瘤(正解)/匈牙利(错解)]
题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...
- JavaScript 进阶问题列表
https://github.com/lydiahallie/javascript-questions/blob/master/zh-CN/README-zh_CN.md 很考基本功
- 学习Kubernetes,这些负载均衡知识点得知道!
负载均衡 负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,同时多服务器能够消除这部分的单点故障. 一个没有使用负载均衡的Web架构一般会长得像这样: ...
- (java)selenium webdriver爬虫学习--爬取阿里指数网站的每个分类的top50 相关数据;
主题:java 爬虫--爬取'阿里指数'网站的每个分类的top50 相关数据: 网站网址为:http://index.1688.com/alizs/top.htm?curType=offer& ...
- Tensorflow细节-P42张量的概念及使用
1.运行以下代码 import tensorflow as tf a = tf.constant([1.0, 2.0], name="a") b = tf.constant([2. ...
- Codeforces Round #604 (Div. 2) A,B,C【D题待补】
思路:直接暴力判断就OK了 #include<bits/stdc++.h> using namespace std; #define int long long signed main() ...
- Oracle DG 三种模式
DG有下面三种模式– Maximum protection– Maximum availability– Maximum performance 在Maximum protection下, 可以保证从 ...
- Hive 数据类型与文件格式
一.基本数据类型 1.基本数据类型 Tinyint 1byte有符号整数 比如20 Smalint 2byte有符号整数 比如20 Int 4byte有符号整数 比如20 Big ...
- [golang]A modern, fast and scalable websocket framework with elegant API written in Go
A modern, fast and scalable websocket framework with elegant API written in Go http://bit.ly/neffos- ...
- zotero zotfile插件 pdf附件文件夹在多系统下的同步设置
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/research/zotero_multiple_directory_pdf_sync ...