Matplotlib使用小技巧(Python3.5版)

参考链接https://mp.weixin.qq.com/s/aMPH4ABeNlRJ5kBWE-vGPg

1.中文显示
Matplotlib默认不支持中文,在py文件中需写入

from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题

2.多个表在同一个图显示

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
x = np.linspace(0, 10, 30)  # 产生的样本总数=30
plt.subplot(3, 1, 1)  # 长度为3高度为1的第1个图
plt.plot(x, np.sin(x))  # 用plot方法画出x=(0,10)间sin的图像
plt.title('图1')
plt.subplot(3, 1, 2)
plt.plot(x, np.sin(x), '-o')  # 用点加线的方式画出x=(0,10)间sin的图像
plt.title('图2')
plt.subplot(3, 1, 3)
plt.title('图3')
plt.scatter(x, np.sin(x))  # 用scatter方法画出x=(0,10)间sin的点图像
plt.show()

3.设置x轴和y轴的名称,设置网格显示

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.xlabel('x轴') #设置x轴名称
plt.ylabel('y轴') #设置y轴名称
plt.title('三角函数')
plt.grid() #设置网格
plt.show()


4.柱状图(水平方向、竖直方向)

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题  #柱状图
x = [1,2,3,4,5,6,7,8]
y = [3,1,4,5,8,9,7,2]
label=['A','B','C','D','E','F','G','H']
plt.subplot(2, 1, 1)
plt.bar(x,y,tick_label = label) #竖直方向
plt.subplot(2, 1, 2)
plt.barh(x,y,tick_label = label) #水平方向
plt.show()


5.误差条图

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
x = np.linspace(0, 10, 50) #样本总数=50
dx=0.6 #x的误差为正负0.6
y = np.sin(x)
plt.figure('变量的误差条', facecolor='lightyellow')  #设置画板属性plt.subplot(2, 1, 1)
plt.title('自变量的误差条')
plt.plot(x, y, '--') #设置虚线
plt.xlabel('x')
plt.ylabel('x 的平方')
plt.grid(1, axis='both',color='g',linestyle='-.')#显示网格线,同时绘制x和y方向的网格线,网格线绿色,网格线为虚线
plt.errorbar(x, y, xerr=dx, ecolor='r') #设置误差条的颜色为红色plt.subplot(2, 1, 2)
plt.title('应变量的误差条')
plt.plot(x, y, '--') #设置虚线
plt.xlabel('x')
plt.ylabel('x 的平方')
plt.grid(1, axis='both',color='g',linestyle='-.')#显示网格线,同时绘制x和y方向的网格线,网格线绿色,网格线为虚线
plt.errorbar(x, y, yerr=dx, ecolor='r') #设置误差条的颜色为红色plt.show()


6.绘制多组直方图,并设置透明度

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题  #在一张图中绘制3组不同的直方图,并设置透明度
x1 = np.random.normal(0, 0.8, 1000)
x2 = np.random.normal(-2, 1, 1000)
x3 = np.random.normal(3, 2, 1000)
kwargs = dict(alpha=0.3, bins=40, density = True)# dict()用于创建字典# alpha:调整图形的透明度;# bins:参数宜设为整数,用于调整区间数目# density:如果为True,返回的纵轴值是归一化后的结果;如果为‘False’,返回的纵轴值是实际频数
plt.hist(x1, **kwargs) #上面参数含义参考plt.hist()
plt.hist(x2, **kwargs)
plt.hist(x3, **kwargs)
plt.show()


7.图像标注

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题  x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.text(3.2, 0, 'sin(x)', weight='bold', color='r')#在坐标(3.2,0)处添加注释文字sin(x),粗细风格为bold,颜色为红色
plt.axhline(y=0.8, ls='--', c='r')  #绘制平行于x轴y=0.8的水平参考线#绘制垂直于x轴x<4 and x>6的参考区域,以及y轴y<0.2 and y>-0.2的参考区域
plt.axvspan(xmin=4, xmax=6, facecolor='r', alpha=0.3) # 垂直x轴
plt.axhspan(ymin=-0.2, ymax=0.2, facecolor='y', alpha=0.3) # 垂直y轴#用箭头标出sin(x)第一个峰值
plt.annotate('maximum', #注释文本内容为maximumxy=(np.pi/2, 1), #被注释的坐标点xytext=(np.pi/2+1, 1), #注释文字的坐标位置weight='bold', #字体线型为boldcolor='r',   #字体颜色为红色arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r'))#箭头参数,参数类型为字典dictplt.show()


8.图例显示

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题  x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()#在一张图里绘制sin,cos的图形
ax.plot(x, np.sin(x), label='sin')
ax.plot(x, np.cos(x), '--', label='cos')
ax.legend() #图例默认在右上角显示,且有边框
#ax.legend(loc='upper left', frameon=False) #调整图例在左上角展示,且不显示边框
#ax.legend(frameon=False, loc='lower center', ncol=2) #调整图例在画面下方居中展示,且分成2列'''
#绘制三个函数图像
y = np.sin(x[:, np.newaxis] + np.pi * np.arange(0, 2, 0.5))
lines = plt.plot(x, y)# lines 是 plt.Line2D 类型的实例的列表
plt.legend(lines[:2], ['first', 'second']) #只展示前2个图像的图例
'''
'''
lines = []
styles = ['-', '--', '-.', ':']
x = np.linspace(0, 10, 1000)for i in range(4):lines += ax.plot(x, np.sin(x - i * np.pi / 2),styles[i], color='black')
ax.axis('equal')#将图例分不同的区域展示
# 设置第一组标签
ax.legend(lines[:2], ['line A', 'line B'],loc='upper right', frameon=False)# 创建第二组标签
from matplotlib.legend import Legend
leg = Legend(ax, lines[2:], ['line C', 'line D'],loc='lower right', frameon=False)
ax.add_artist(leg)
'''
plt.show()


9.多子图

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
'''
#在一个1010的画布中,(0.65,0.65)的位置创建一个0.20.2的子图
ax1 = plt.axes()
ax2 = plt.axes([0.65, 0.65, 0.2, 0.2])
'''
'''
#在2个子图中,显示sin(x)和cos(x)的图像
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.5, 0.8, 0.4], ylim=(-1.2, 1.2))
ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.4], ylim=(-1.2, 1.2))x = np.linspace(0, 10)
ax1.plot(np.sin(x))
ax2.plot(np.cos(x))
'''
'''
#用for创建6个子图,并且在图中标识出对应的子图坐标
for i in range(1, 7):plt.subplot(2, 3, i)plt.text(0.5, 0.5, str((2, 3, i)), fontsize=18, ha='center')# 方法二
# fig = plt.figure()
# fig.subplots_adjust(hspace=0.4, wspace=0.4)
# for i in range(1, 7):
#     ax = fig.add_subplot(2, 3, i)
#     ax.text(0.5, 0.5, str((2, 3, i)),fontsize=18, ha='center')
'''
'''
#设置相同行和列共享x,y轴
fig, ax = plt.subplots(2, 3, sharex='col', sharey='row') #2*3=6个子图#用[]的方式取出每个子图,并添加子图座标文字
for i in range(2):for j in range(3):ax[i, j].text(0.5, 0.5, str((i, j)),fontsize=18, ha='center')
'''
#显示一组二维数据的频度分布,并分别在x,y轴上,显示该维度的数据的频度分布
mean = [0, 0]
cov = [[1, 1], [1, 2]]
x, y = np.random.multivariate_normal(mean, cov, 3000).T# Set up the axes with gridspec
fig = plt.figure(figsize=(6, 6))
grid = plt.GridSpec(4, 4, hspace=0.2, wspace=0.2)
main_ax = fig.add_subplot(grid[:-1, 1:])
y_hist = fig.add_subplot(grid[:-1, 0], xticklabels=[], sharey=main_ax)
x_hist = fig.add_subplot(grid[-1, 1:], yticklabels=[], sharex=main_ax)# scatter points on the main axes
main_ax.scatter(x, y,s=3,alpha=0.2)# histogram on the attached axes
x_hist.hist(x, 40, histtype='stepfilled', orientation='vertical')
x_hist.invert_yaxis()y_hist.hist(y, 40, histtype='stepfilled',orientation='horizontal')
y_hist.invert_xaxis()plt.show()


10.三维图像

# -*-coding:utf-8-*-
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体FangSong仿宋;SimHei黑体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题  #创建三维画布
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')
'''
#绘制一个三维螺旋线
zline = np.linspace(0, 15, 1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot3D(xline, yline, zline)
'''
#绘制一组三维点
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens')plt.show()

Matplotlib使用小技巧(Python3.5版)相关推荐

  1. 电商直播带货小技巧(入门版)

    作为电商的一个新风口,众多企业和商家纷纷做直播带货的新尝试.毕竟大家都知道这是一个机遇,但机遇不等于入门就可以获得成功. 虽然直播电商确实能够给众企业和商家带来更多的流量,但是大家首先要面对的一个难题 ...

  2. 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧试读版

    零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二 ...

  3. excel删除行 uipath_工作再忙,也要学会这10个最经典的Excel小技巧

    来源:Excel精英培训 作者:兰色幻想-赵志东 今天,小编要对Excel小技巧来一次总结,整理出十个最经典的小技巧 .你不要看标题就想当然的说"我会",因为小编会增加你可能不知道 ...

  4. rust怎么传送坐标_梦幻西游电脑版:金银锦盒修改后资金怎么攥?仅需知道六个小技巧!...

    Hello大家晚上好啊,最近小编收到不少水友问同一个问题,金银锦盒修改后资金怎么攥?小编给出的建议,可以考虑跑商.下面一起来分析一下吧! 一.现阶段跑商任务及奖励现状 三界功绩系统全服上线之后,对金银 ...

  5. 送你16个matplotlib绘图实用小技巧(附代码)

    来源:雪山飞猪 本文约2800字,建议阅读10分钟 本文为你分享16个matplotlib绘图实用小技巧. 标签:数据分析 1. 添加标题-title import numpy as npimport ...

  6. 16个matplotlib绘图实用小技巧!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 本文主要 16 个 Matplotlib 绘图实用的小技巧. 1. 添加标题-ti ...

  7. [原]Console小技巧——Console版贪食蛇

    这一篇是我的Console小技巧的最后一篇文章,以下是索引: 1.[原]Console小技巧--七彩输出 2.[原]Console小技巧--字符涂鸦 3.[原]Console小技巧--Console版 ...

  8. android 版本更新忽略,安卓微信7.0.14 正式版更新,几个被你忽略的微信小技巧

    安卓微信7.0.14 正式版更新,几个被你忽略的微信小技巧 2020-05-01 22:50:38 44点赞 101收藏 30评论 " 生活中总有几个小技巧让你得心应手!" 今天给 ...

  9. 腾讯手机管家(pc版) for android,腾讯手机管家(PC版)for Android小技巧

    前几天看到添翼圈爆出腾讯应用助手泄漏版,作为一个老魔乐软件用户,抱着试试看的心情下载下来试了一下.之前一直也有用应用助手beta版,感觉新版界面挺清新的,立体感挺强的,比之前平面的界面感觉洋气很多.功 ...

最新文章

  1. Python Numpy多维数组.sum(axis=0/1/2...) 详解
  2. 管理多个Java安装
  3. vmware 搭建k8s无法ping通子节点_一波四折 —— 记一次K8S集群应用故障排查
  4. 轻拢慢捻,微服务熔断大总管
  5. HBuilder工作笔记001---HBuilder打包安卓和ios应用
  6. 推荐12个最好的 JavaScript 图形绘制库
  7. 30 个最好的数据可视化工具推荐
  8. 天猫精灵测评与开发案例
  9. 网站地图是什么,怎么制作和查看网站的地图呢?
  10. 禁用右键 回车 ESC 和 ALT+F4组合建
  11. Atlas 200 HiLens Kit
  12. ​12864无字库液晶显示(一)
  13. 条码查询接口,商品条码和药品条码查询
  14. 5.4非线性反馈移位寄存器/5.5序列密码攻击法
  15. Python对字符首字母大写处理
  16. WM6 模拟器 简体中文汉化绿色版 WM6模拟器上网设置
  17. 证金汇金券商股暴动,指数在大涨,机构们这样看20170828
  18. 【vue】滚动条自动滚动到底部
  19. 【东莞市选2007】格斗俱乐部
  20. 当PS遇上了AI:分割抠图算法总结

热门文章

  1. matlab读取声音文件
  2. 声音文件大小的计算方法
  3. Ubuntu添加和设置开机自动启动程序的方法
  4. 服务器共享文件搜索慢的原因,客户端访问服务器共享文件反应很慢.doc
  5. (3)riak_core系统的工作方式
  6. 【网络篇】TCP SYN Flood Attack(洪水攻击)
  7. U盘启动安装Windows7 系统
  8. 前端开发实习笔试题(简答题)
  9. mysql中的unix_timestamp函数
  10. Eclipse字体大小设置的5个步骤