https://www.bjsxt.com/down/8468.html

绘制方法:

绘制直线:

  1. #coding:utf-
  2. import matplotlib.pyplot as plt
  3. #准备绘制的两个点(,),(,)
  4. #调用绘制的plot方法
  5. plt.plot([,], [,]) #两个点的x和y写在一起
  6. #显示绘制的图
  7. plt.show()

返回:

绘制折线图

  1. #coding:utf-
  2. import matplotlib.pyplot as plt
  3. x = [,,,,]
  4. y = [,,,,]
  5. #调用绘制的plot方法
  6. plt.plot(x, y) #两个点的x和y写在一起
  7. #显示绘制的图
  8. plt.show()

返回:

开始学习-设置样式

windows不支持中文,添加:

  1. #不支持中文的解决办法
  2. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

macos不支持中文,可见mac中matplotlib不支持中文的解决办法

运行的时候为:

  1. #coding:utf-8
  2. import matplotlib.pyplot as plt
  3. x = [1,2,3,4,5]
  4. y = [1,4,9,16,25]
  5. #调用绘制的plot方法
  6. plt.plot(x, y, linewidth=5)
  7. plt.xlabel('x')
  8. plt.ylabel('y=x^2')
  9. #不支持中文的解决办法
  10. plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
  11. #添加标题
  12. plt.title('多个点绘制折线图') #会出现乱码
  13.  
  14. #显示绘制的图
  15. plt.show()

就成功了:

绘制曲线:

  1. #coding:utf-
  2. import matplotlib.pyplot as plt
  3. x = range(-, )
  4. y = [i** for i in x]
  5. #调用绘制的plot方法
  6. plt.plot(x, y, linewidth=)
  7. plt.xlabel('x')
  8. plt.ylabel('y=x^2')
  9. #不支持中文的解决办法
  10. plt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
  11. #添加标题
  12. plt.title('多个点绘制折线图') #会出现乱码
  13. #保存成图片
  14. plt.savefig('result') #默认格式是png,可以指定为jpg格式result.jpg
  15. #显示绘制的图
  16. plt.show()

返回:

正弦和余弦曲线

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #-10之间100个等差数
  5. x = np.linspace(,,)
  6. y = np.sin(x)
  7. #调用绘制的plot方法
  8. plt.plot(x, y, linewidth=)
  9.  
  10. cos_y = np.cos(x)
  11. plt.plot(x, cos_y, linewidth=)
  12. #显示绘制的图
  13. plt.show()

返回:

subplot的使用:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #-10之间100个等差数
  5. x = np.linspace(,,)
  6. y = np.sin(x)
  7. plt.subplot(,,)
  8. #调用绘制的plot方法
  9. plt.plot(x, y, linewidth=)
  10.  
  11. cos_y = np.cos(x)
  12. plt.subplot(,,)
  13. plt.plot(x, cos_y, linewidth=)
  14.  
  15. y_line = [i** for i in x]
  16. plt.subplot(,,)
  17. plt.plot(x, y_line, linewidth=)
  18. #显示绘制的图
  19. plt.show()

返回:

修改某一个画布的x轴的坐标:

plt.xlim(-5,20) : x轴

plt.ylim(-5,20) : y轴

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #-10之间100个等差数
  5. x = np.linspace(,,)
  6. y = np.sin(x)
  7. plt.subplot(,,)
  8. #调用绘制的plot方法
  9. plt.xlim(-,)
  10. plt.plot(x, y, linewidth=)
  11.  
  12. #显示绘制的图
  13. plt.show()

返回:

绘制散点图

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #-10之间100个等差数
  5. x = np.linspace(,,)
  6. y = np.sin(x)
  7. #调用绘制的plot方法
  8. plt.scatter(x, y, linewidth=)
  9. #等价于
  10. #plt.plot(x, y, 'o')
  11.  
  12. #显示绘制的图
  13. plt.show()

返回:

⚠️plot绘制图形的速度由于scatter,所以如果画一堆点,而且点的形式没有差别,那么就使用plot;如果点的形式有差别,即点的大小和颜色有差别时,则必须使用scatter

点大小颜色不同的情况

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #10中大小,100种颜色的散点图
  5.  
  6. #使得执行多次,每次获得的随机数都相同
  7. np.random.seed()
  8.  
  9. #100个随机点
  10. x = np.random.rand()
  11. y = np.random.rand()
  12.  
  13. #颜色的类别数量要等于点的个数
    #大小则没有要求
  14. #设置10种大小,值过小,所以乘500
  15. size = np.random.rand()*
  16. #生成100种颜色
  17. color = np.random.rand()
  18.  
  19. #调用绘制的plot方法,alpha表示透明度,使得重叠的部分可见
  20. plt.scatter(x, y, s=size, c=color, alpha=0.7)
  21. #等价于
  22. #plt.plot(x, y, 'o')
  23.  
  24. #显示绘制的图
  25. plt.show()

返回:

当点的个数大于大小的个数时,循环设置。因为有10种大小,所以第一个点和第11个点是大小一样的,以此类推

绘制不同样式不同颜色的线条

还有其他的

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. x = np.linspace(,,)
  5.  
  6. plt.plot(x, x+, '--g')
  7. plt.plot(x, x+, '-.r')
  8. plt.plot(x, x+, ':b')
  9. plt.plot(x, x+, '.k')
  10. plt.plot(x, x+, ',c')
  11. plt.plot(x, x+, '*y')
  12.  
  13. #显示绘制的图
  14. plt.show()

返回:

添加图例legend():

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. x = np.linspace(,,)
  5.  
  6. #使用legend()图例,给plot方法添加参数label
  7. plt.plot(x, x+, '--g', label='--g')
  8. plt.plot(x, x+, '-.r', label='-.r')
  9. plt.plot(x, x+, ':b')
  10. plt.plot(x, x+, '.k')
  11. plt.plot(x, x+, ',c')
  12. plt.plot(x, x+, '*y')
  13. plt.legend(loc='lower right') #默认位置在左上角loc='upper left',使用参数loc修改为右下角
  14. #显示绘制的图
  15. plt.show()

返回:

还有其他配置参数:

透明度就是当图例遮住图时,能够透过看到线条

绘制柱状图

bar的宽度的说明:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. x = [, , , ]
  5. y = [, , , ]
  6.  
  7. #设置为原来柱宽的三倍
  8. plt.bar(x, y, width=)
  9.  
  10. #不支持中文的解决办法
  11. plt.rcParams['font.sans-serif']=['Songti SC']
  12.  
  13. #修改x坐标的值
  14. x_label = ['1980年', '1985年', '1990年', '1995年']
  15. plt.xticks(x, x_label) #即x轴坐标就只有x设置的这4个值了
  16.  
  17. #给x、y坐标加名称
  18. plt.xlabel('年份')
  19. plt.ylabel('销量')
  20. plt.title('根据年份销量对比图')
  21. #显示绘制的图
  22. plt.show()

返回:

bar和barh函数的使用

barh:水平方向绘制

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. np.random.seed()
  7. x = np.arange()
  8. y = np.random.randint(-,,)
  9.  
  10. #将画布分成1行2列
  11. #第一个区域画bar
  12. plt.subplot(,,)
  13. #添加颜色
  14. plt.bar(x,y, color='blue')
  15. #在0位置添加蓝色的线条
  16. plt.axhline(, color='blue', linewidth=)
  17.  
  18. #第一个区域画barh,即x,y对换
  19. plt.subplot(,,)
  20. plt.barh(x,y, color='red')
  21. plt.axvline(, color='red', linewidth=)
  22.  
  23. #显示绘制的图
  24. plt.show()

返回:

正值为一种颜色,负值为另一种颜色:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. np.random.seed()
  7. x = np.arange()
  8. y = np.random.randint(-,,)
  9.  
  10. v_bar= plt.bar(x,y, color='blue')
  11.  
  12. #将y值大于0的设置为蓝色,小于0的设置为绿色
  13. #遍历v_bar对象
  14. #zip()将v_bar和y对应的值对应在一起,通过y的值判断柱的颜色
  15. for bar, height in zip(v_bar, y):
  16. if height<:
  17. bar.set(color='green')
  18.  
  19. #显示绘制的图
  20. plt.show()

返回:

柱状图使用实例:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. #准备数据
  7. #三部电影的名称
  8. real_names = ['千与千寻', '玩具总动员', '黑衣人:全球通缉']
  9. #3天票房,三天排名是不同的
  10. real_num1 = [, , ]
  11. real_num2 = [, , ]
  12. real_num3 = [, , ]
  13.  
  14. x = np.arange(len(real_names))
  15. #绘制柱状图,alpha参数用于显示重叠部分,本来默认为重叠的
  16. plt.bar(x, real_num1, alpha=0.5)
  17. plt.bar(x, real_num2, alpha=0.5)
  18. plt.bar(x, real_num3, alpha=0.5)
  19. #显示绘制的图
  20. plt.show()

返回:

最后:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. #不支持中文的解决办法
  7. plt.rcParams['font.sans-serif']=['Songti SC']
  8.  
  9. #准备数据
  10. #三部电影的名称
  11. real_names = ['千与千寻', '玩具总动员', '黑衣人:全球通缉']
  12. #3天票房,三天排名是不同的
  13. real_num1 = [, , ]
  14. real_num2 = [, , ]
  15. real_num3 = [, , ]
  16.  
  17. x = np.arange(len(real_names))
  18. #绘制柱状图,alpha参数用于显示重叠部分,本来默认为重叠的
  19. #为了让他们不重叠,而是放在旁边,设置为[i+width for i in x]
  20. width = 0.3
  21. plt.bar(x, real_num1, alpha=0.5, width=width, label=real_names[])
  22. plt.bar([i+width for i in x], real_num2, alpha=0.5, width=width, label=real_names[])
  23. plt.bar([i+*width for i in x], real_num3, alpha=0.5, width=width, label=real_names[])
  24. #添加图例
  25. plt.legend()
  26.  
  27. #设置x的坐标的值,第一天、第二天、第三天
  28. #为了放在中间,设置为[i+width for i in x]
  29. x_label= ['第{}天'.format(i+) for i in x]
  30. plt.xticks([i+width for i in x],x_label)
  31.  
  32. plt.ylabel('票房数')
  33. plt.title('3天3部电影票房数')
  34. #显示绘制的图
  35. plt.show()

返回:

饼状图

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. #不支持中文的解决办法
  7. plt.rcParams['font.sans-serif']=['Songti SC']
  8.  
  9. #准备男生、女生人数及比例
  10. man =
  11. woman =
  12. man_perc = man/(man+woman)
  13. woman_perc = woman/(man+woman)
  14.  
  15. #添加名称
  16. labels = ['男','女']
  17. #添加颜色
  18. colors = ['blue', 'red']
  19. #explode=(,0.05) 将图中间设置一个分裂线
  20. #autopct='%0.1f%%' 显示比例并设置比例显示格式
  21. #paches, texts是labels字体, autotexts是比例字体
  22. paches, texts, autotexts = plt.pie([man_perc, woman_perc], labels=labels, colors=colors, explode=(,0.05), autopct='%0.1f%%')
  23.  
  24. #修改字体颜色
  25. for text in autotexts:
  26. text.set_color('white')
  27.  
  28. #设置字体大小
  29. for text in texts:
  30. text.set_fontsize()
  31.  
  32. #显示绘制的图
  33. plt.show()

返回:

直方图——关注分布状态

柱状态关注具体的某个值

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. #不支持中文的解决办法
  7. plt.rcParams['font.sans-serif']=['Songti SC']
  8.  
  9. #生成1000个标准正太分布随机数
  10. x = np.random.randn()
  11.  
  12. #bins=, 表示将10个柱放在一起,这样柱子的宽度就比较小了
  13. plt.hist(x, bins=)
  14.  
  15. #显示绘制的图
  16. plt.show()

返回:

还有normal方法指定期望和正态分布:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. #不支持中文的解决办法
  7. plt.rcParams['font.sans-serif']=['Songti SC']
  8.  
  9. #生成1000个,normal方法指定期望和正态分布
  10. x = np.random.normal(,0.8,)
  11. y = np.random.normal(-,,)
  12. z = np.random.normal(,,)
  13.  
  14. #alpha为(,)
  15. kwargs = dict(bins=, alpha=0.5)
  16. #bins=, 表示将10个柱放在一起,这样柱子的宽度就比较小了
  17. #plt.hist(x, **kwargs)等价于plt.hist(x, bins=)
  18. #这样当设置的参数多时,就不用回一个个都写一遍,写一次即可
  19. plt.hist(x, **kwargs)
  20. plt.hist(y, **kwargs)
  21. plt.hist(z, **kwargs)
  22.  
  23. #显示绘制的图
  24. plt.show()

返回:

绘制等高线和三维图

所以100个x和100个y的相交点有10000个

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6. #创建x,y
  7. x = np.linspace(-, , )
  8. y = np.linspace(-, , )
  9.  
  10. #计算x,y的相交点
  11. X, Y = np.meshgrid(x,y)
  12. Z = np.sqrt(X**+Y**)
  13.  
  14. plt.contour(X,Y,Z)
  15. #显示绘制的图
  16. plt.show()

即哪些x和y相交的点计算得到的Z值是相同的,就连起来画成等高线

返回:

还有plt.contourf(X,Y,Z)会填充:

三维图

还要导入3D包:

  1. #coding:utf-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. #导入3D包
  5. from mpl_toolkits.mplot3d import Axes3D
  6.  
  7. X = [,,,]
  8. Y = [,,,]
  9. Z = [,,,]
  10. #该图对象
  11. figure = plt.figure()
  12. #创建Axes3D对象
  13. ax = Axes3D(figure)
  14. ax.plot_trisurf(X,Y,Z)
  15.  
  16. #显示绘制的图
  17. 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. P1402 酒店之王[网络瘤(正解)/匈牙利(错解)]

    题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...

  2. JavaScript 进阶问题列表

    https://github.com/lydiahallie/javascript-questions/blob/master/zh-CN/README-zh_CN.md 很考基本功

  3. 学习Kubernetes,这些负载均衡知识点得知道!

    负载均衡 负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,同时多服务器能够消除这部分的单点故障. 一个没有使用负载均衡的Web架构一般会长得像这样: ...

  4. (java)selenium webdriver爬虫学习--爬取阿里指数网站的每个分类的top50 相关数据;

    主题:java 爬虫--爬取'阿里指数'网站的每个分类的top50 相关数据: 网站网址为:http://index.1688.com/alizs/top.htm?curType=offer& ...

  5. Tensorflow细节-P42张量的概念及使用

    1.运行以下代码 import tensorflow as tf a = tf.constant([1.0, 2.0], name="a") b = tf.constant([2. ...

  6. Codeforces Round #604 (Div. 2) A,B,C【D题待补】

    思路:直接暴力判断就OK了 #include<bits/stdc++.h> using namespace std; #define int long long signed main() ...

  7. Oracle DG 三种模式

    DG有下面三种模式– Maximum protection– Maximum availability– Maximum performance 在Maximum protection下, 可以保证从 ...

  8. Hive 数据类型与文件格式

    一.基本数据类型 1.基本数据类型 Tinyint  1byte有符号整数  比如20 Smalint 2byte有符号整数 比如20 Int          4byte有符号整数 比如20 Big ...

  9. [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- ...

  10. zotero zotfile插件 pdf附件文件夹在多系统下的同步设置

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/research/zotero_multiple_directory_pdf_sync ...