matplotlib库画图基础

文章目录

  • matplotlib库画图基础
    • 1.matplotlib简介
    • 2.绘图操作
      • 2.1导入画图库
      • 2.2画第一个图
      • 2.3创建figure
      • 2.4控制线条风格
      • 2.5坐标轴控制
      • 2.6绘制坐标轴
      • 2.7绘制标注
      • 2.8绘制散点图
      • 2.9绘制条形图
      • 2.10绘制等高图
      • 2.11绘制三维图
      • 2.12在figure中绘制多个子图

1.matplotlib简介

​ Matplotlib 是一个非常强大的 Python 画图工具,如果用过MATLAB的话,学这个学起来十分简单,因为Matplotlib的画图跟MATLAB里面的函数差不多。

2.绘图操作

2.1导入画图库
import matplotlib.pyplot as plt
import numpy as np
2.2画第一个图

以下操作都在jupyter notebook中画制,如果是在pycharm等其他编译器,会弹出figure组件,供用户调整画像。

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2
#画图使用plot
plt.plot(x,y1,x,y2)
plt.show()

基础知识点:每个画图都会使用一个figure,figure可以认为是一个画板,如果不特别声明,所以画图和曲线将在一个默认figure中展示

2.3创建figure

在jupyter notebook中画制是没有figure组件弹出的,所以所有的绘图都会输出到notebook中

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2#figure1(独立的画板)
plt.figure(1)
plt.plot(x,y1)#figure2(独立的画板)
plt.figure(2)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()

因为在jupyter notebook上画的图,直接显示在页面上,无法看到figure组件。用pycharm就没事了。

2.4控制线条风格

可以通过color控制线条颜色,linewidth控制线条宽度,linestyle控制线条风格

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2#figure1
plt.figure(1)
plt.plot(x,y1)#figure2
plt.figure(2)
plt.plot(x,y1,color='r',linewidth=1.5,linestyle='dotted')
plt.plot(x,y2,color='g',linewidth=1.5,linestyle='--')
plt.show()

2.5坐标轴控制

对画图的x,y轴的坐标进行控制可以通过xlim和xlabel,ylim和ylabel进行控制

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2plt.plot(x,y1,color='r',linewidth=1.5,linestyle='dotted')
plt.plot(x,y2,color='g',linewidth=1.5,linestyle='--')
#控制X坐标显示范围
plt.xlim((-2,2))
#给X和Y轴起轴标签名
plt.xlabel('Xlabel')
plt.ylabel('Ylabel')
#控制X轴的度标,ticks标度位置,labels标度名
plt.xticks(np.linspace(-2,2,4))
plt.yticks(ticks=[-0.5,1,2.5],labels=['bad','good','very good'])#曲线对照框
plt.legend(('label1', 'label2'))
plt.show()

2.6绘制坐标轴

将坐标轴移动到画图中心。

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2plt.plot(x,y1,color='r',linewidth=1.5,linestyle='dotted')
plt.plot(x,y2,color='g',linewidth=1.5,linestyle='--')
plt.xlim((-2,2))
plt.xlabel('X')
plt.ylabel('Y')
plt.xticks(np.linspace(-2,2,4))
plt.yticks(ticks=[-0.5,1,2.5],labels=['bad','good','very good'])ax = plt.gca()  # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none')  # 将右边 边沿线颜色设置为空 其实就相当于抹掉这条边
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 设置中心的为(0,0)的坐标轴
ax.spines['bottom'].set_position(('data', 0))  # 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))plt.show()

2.7绘制标注

主要是在画图中标注信息,起主要使用函数annotate()来实现

x = np.linspace(-1,1,50)
y = 2*x + 1
x0 = 0.5
y0=2*x0+1
plt.scatter(x0,y0)
plt.plot([x0,x0],[y0,-1],'--',lw=2.5)
plt.plot(x,y)
#xy控制箭头的点,xytext控制标签的位置,arrowprops用来设置箭头的风格
#r'$2x+1=%s$'%y0 是要打印的文本内容,这里r代表字符串中字符不转义(不好说明,如果看不懂直接写自己要打印的内容即可)
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xytext=(0.6,1.5),arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
plt.show()

2.8绘制散点图

绘制散点图使用函数scatter,该函数主要用作绘制散点图

x = np.linspace(-1,1,50)
y = 2*x + 1
r = np.random.normal(0,0.3,50)
y1= y+rplt.scatter(x,y1,color='b',linewidths=1)
plt.plot(x,y,color='r',linewidth=2.5)plt.show()

2.9绘制条形图
x = np.linspace(0,5,6)
y = 2*x + 10
r = np.random.normal(0,2,6)
y1= y+r
#画柱状图
plt.bar(x,y1,edgecolor='white')
plt.bar(x,-y,color='orange',edgecolor='white')
#标注值
for X,Y in zip(x,y1):plt.text(X,Y+0.1,'%.2f'%Y,ha='center',va='bottom')
for X,Y in zip(x,y):plt.text(X,-Y-2.2,'%.2f'%Y,ha='center',va='bottom')plt.show()

2.10绘制等高图
# 计算x,y坐标对应的高度值
def f(x, y):return (1-x/2+x**5+y**3) * np.exp(-x**2-y**2)# 生成x,y的数据
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)# 把x,y数据生成mesh网格状的数据
#等高线的显示是在网格的基础上添加上高度值
X, Y = np.meshgrid(x, y)# 填充等高图
Cs=plt.contourf(X, Y, f(X, Y),8,alpha=0.7,cmap=plt.cm.hot)
#等高线
C=plt.contour(X, Y, f(X, Y),8,colors='black')
#增加标签
plt.clabel(C,inline=True,fontsize=8)
#设置颜色条
plt.colorbar(Cs)# 显示图表
plt.show()

2.11绘制三维图

画三维图,需要使用Axes3D模块,所有要先进行导入:

from mpl_toolkits.mplot3d import Axes3D

构建三维坐标:

figure = plt.figure()
ax = Axes3D(figure)#也可以这样
fig = plt.figure()
ax = fig.gca(projection='3d')

绘制:

# X, Y 的值
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
# x,y 平面的网格,其实就是对X,Y进行广播操作
X, Y = np.meshgrid(X, Y)  R = np.sqrt(X ** 2 + Y ** 2)
# Z 的值
Z = np.sin(R)
# rstride:网格之间的行跨度
# cstride:网格之间的列跨度
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
# zdir :  等高线图('z' | 'x' | 'y')
# offset : 表示等高线图投射到指定页面的某个刻度
ax.contourf(X,Y,Z,zdir='z',offset=-2)p
# z轴的显示范围
ax.set_zlim(-2,2)
plt.show()

这里的刻度没负号是因为在jupyter里面画的图,matplotlib对jupyter notebook多少有点不兼容。

在jupyter notebook中因为没办弹出figure组件,输出的结果直接是显示在网页中的。这导致一些显示会出问题。在pycharm编译器基本不会出现这种显示的错误。

2.12在figure中绘制多个子图

使用subplot,在一个figure中绘制多个图

fig=plt.figure()
plt.subplot(2,2,1)
#绘制图1plt.subplot(2,2,2)
#绘制图2plt.subplot(2,2,3)
#绘制图3plt.subplot(2,2,4)
#绘制图4

matplotlib库绘图基础相关推荐

  1. matplotlib绘图_使用matplotlib库绘图

    本代码演示对列表元素进行绘图并可视化 代码如下: import matplotlib.pyplot as plt #导入matplotlib绘图库,并设置简称为pltlist1=[i*2 for i ...

  2. mac上python的matplotlib库绘图时xlabel中文字符显示成小方框-解决方案

    import matplotlib.pyplot as plt 然后,mac上Python绘图遇到,一个汉字一个框: 找了好几篇博客,并不管用,原因可能是设置的SimHei.KaiTi之类的字体在ma ...

  3. Python matplotlib库绘图时设置标题 (label)、坐标轴 (axis) 和标注 (legend)的字体及大小

    文章目录 1 标题 2 坐标轴 3 标注 4 示例 5 展示 6 说明 1 标题 plt.xlabel('False positive rate', fontdict={"family&qu ...

  4. matplotlib常见绘图基础代码小结:折线图、散点图、条形图、直方图、饼图

    一.折线图 二.散点图 三.条形图 四.直方图 五.饼图 一.折线图 折线图用于显示随时间或有序类别的变化趋势 from matplotlib import pyplot as pltx = rang ...

  5. python数据可视化开发(1):Matplotlib库基础知识

    文章目录 前言 01.工具栏组件 02.图表数据 03.设置字体字典 全局字体样式 常用中文字体对应名称 查询当前系统所有字体 04.图像配置实例 配置格式 参数说明 官方文档:[matplotlib ...

  6. linux plt.show不显示图片,解决matplotlib库show()方法不显示图片的问题

    解决matplotlib库show()方法不显示图片的问题 最近使用python里的matplotlib库绘图,想在代码结束时显示图片看看,结果图片一闪而过,附上我原来代码: import matpl ...

  7. 不用下载字体解决Mac系统下Python的matplotlib库中文乱码的问题

    百度或谷歌matplotlib库绘图时产生中文乱码问题,得到的最多的答案就是下面几行代码: import numpy as np import matplotlib.pyplot as plt plt ...

  8. python数据展示库_数据分析与展示——Matplotlib库入门

    Matplotlib库入门 Matplotlib库介绍 Matliotlib库是Python优秀的数据可视化第三方库. Matliotlib库的效果见:http://matplotlib.org/ga ...

  9. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)

    Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...

最新文章

  1. 1哈哈欢迎使用CSDN-markdown编辑器
  2. 一周AI创业:MIT博士领衔星药科技获新融资,自动驾驶再掀资本狂潮
  3. Spring mvc PostgreSQL 插入timestamp和int8
  4. java 中的finally 语句块执行顺序
  5. Faster RCNN总结
  6. (转)三大博弈定义+结论
  7. 埃罗芒阿老师计算机谱,[B型]ヒトリゴト-埃罗芒阿老师OP 完整版
  8. linux内核那些事之struct page
  9. 华为云IoT专家直播——构筑智慧路灯实战分享
  10. delphi三层架构中注册服务器
  11. C:\Users\xx\.xxxxxx\system\tomcat\xxx\work\Catalina\localhost\ROOT(系统找不到指定文件)
  12. 逼疯UE设计师,不可不知的提升产品用户体验的10个测试方法
  13. cpolar——安全的内网穿透工具
  14. 2017年苹果开发者账号申请——账号VISA卡支付流程
  15. 七大行星排列图片_太阳系九大行星排列顺序(口诀:水金地,火木土,天海)...
  16. 百度地图api如何查询周边大学、商场等的个数?可实现翻页
  17. python最佳身高_Python+sklearn使用线性回归算法预测儿童身高
  18. 通过无线串口ATK-LoRa-01发送陀螺仪MPU6050三种维度信息---数值处理代码分享(小成就^V^)
  19. 一种基于傅里叶变换的相位配准算法phase correlation approach,利用互功率谱得到时空的平移。
  20. 宅兔APP技术服务支持

热门文章

  1. PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决
  2. Java程序员从笨鸟到菜鸟之(七十五)细谈struts2(十四)struts2+ajax实现异步验证...
  3. WebPart的三种部署方法
  4. sql server 2008学习6 更复杂的查询
  5. JavaScript计算两个文本框内数据的乘积(四舍五入保留两位小数)
  6. 用jdbc连接各数据库驱动
  7. Java中,一切皆是对象——java中的对象类型与基本数据类型的区别
  8. jar包和war包区别及理解
  9. python语言中with as的用法使用详解
  10. Gin使用mongo进行增删改查/聚合/数据转换