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的更多相关文章

  1. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  2. 一起做RGB-D SLAM 第二季 (一)

    小萝卜:师兄!过年啦!是不是很无聊啊!普通人的生活就是赚钱花钱,实在是很没意思啊! 师兄:是啊…… 小萝卜:他们都不懂搞科研和码代码的乐趣呀! 师兄:可不是嘛…… 小萝卜:所以今年过年,我们再做一个S ...

  3. 【Python学习笔记】调整matplotlib的图例legend的位置

    有时默认的图例位置不符合我们的需要,那么我们可以使用下面的代码对legend位置进行调整. plt.legend(loc='String or Number', bbox_to_anchor=(num ...

  4. 《舌尖上的中国》第二季今日首播了,天猫食品也跟着首发,借力使力[bubuko.com]

    天猫旗下的天猫食品与央视CCTV-1栏目<舌尖上的中国>第二季(以下简称“舌尖2”)达成合作,天猫食品成为舌尖2独家合作平台,同步首发每期 节目中的食材和美食菜谱,舌尖2摄制组还将为同步上 ...

  5. python课程第二周重点记录

    python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...

  6. JAVA入门第二季(mooc-笔记)

    相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第二季&g ...

  7. Big Data 應用:第二季(4~6月)台湾地区Game APP 变动分布趋势图

    图表简介: 该示意图表示了台湾地区第二季内所有Game APP类别的分布情形,经由该图表我们可以快速的了解到在这三个月内,哪类型的APP是很稳定:抑或者哪类型的APP是非常不稳定的. 名词解释: 类别 ...

  8. 再造轮子之网易彩票-第二季(IOS 篇 by sixleaves)

    02-彩票项目第二季 2.封装SWPTabBar方式一 接着我们思考如何进行封装.前面已经将过了为什么要封装, 和封装达到的效果.这里我们主要有两种封装方式,分别是站在不同的角度上看待问题.虽然角度不 ...

  9. QQ聊天界面的布局和设计(IOS篇)-第二季

    QQChat Layout - 第二季 本来第二季是快写好了, 也花了点功夫, 结果gitbook出了点问题, 给没掉了.有些细节可能会一带而过, 如有疑问, 相互交流进步~. 在第一季中我们完成了Q ...

随机推荐

  1. linux系统编程之信号(三)

    今天继续对信号进行研究,话不多说,言归正传: 更多信号发送函数: 上节中我们已经接触到了一些信号的发送函数,这里更进一步学习一下其它的发送函数: alarm:只能发送SIGALRM信号 下面通过一个例 ...

  2. SpringBoot 注册Servlet三大组件【Servlet、Filter、Listener】-原生代码+@Bean+效果展示

    由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件. 注册三大组件,class MyServlet()/clas ...

  3. .net序列化 - Newtonsoft(Json.Net)简单应用

    Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库. Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简 ...

  4. 十一.Protobuf3可选项

    Protobuf3 可选项 .proto文件中可以声明许多选项.选项不会改变声明的整体含义,但可能会影响在特定上下文中处理声明的方式.可用选项的完整列表在google/protobuf/descrip ...

  5. Java - 框架之 Maven

     一. 下载依赖包 mvn help:system  2. 配置下载路径到 aliy (可选) <!-- 阿里云仓库 --> <mirror> <id>alimav ...

  6. Arthas使用指南

    Arthas 能为你做什么? 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在预发 de ...

  7. 批量下载oracle jdk

    1.打开 https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html 2.同意条款 3. ...

  8. work,工作模式

    work,工作模式 一个消息只能被一个消费者获取 工作模式就是simple模式多了几个消费者,其他一样 来自为知笔记(Wiz)

  9. mysql sum的多条件求和

    1.无条件求和 sum(字段名): 2.多条件求和 sum(IF(c1>0, c1, 0)); (IF(o.is_cod=0,o.order_amount-IF(b.back_status> ...

  10. Firefox设置谷粉搜搜为默认搜索引擎的方法

    原文转自:http://www.gfsoso.org/119/   作者: cjx 分类: 谷粉专题 发布时间: 2014-07-09 23:10 ė 668条评论   如果使用Firefox的朋友希 ...