User-Profile-Image
hankin
  • 5
请到[后台->外观->菜单]中设置菜单。
  • 分类
    • 靶机渗透
    • 计算机小技巧
    • 未分类
    • 数据结构
    • 内网渗透
    • 代码审计
    • XSS
    • WEB安全漏洞学习
    • Web
    • python
    • PHP
    • NodeJS
    • MYSQL
    • Misc
    • JavaScript
    • Docker
    • CTF相关知识点
    • CTFWP
    • Crypto
    • Cobalt Strike
  • 页面
  • 友链
    • 三哥的博客
    • Root师傅的博客
    • EDS师傅的博客
    • 天正哥的博客
    • 天尘翼师傅的博客
    • 熵增师傅的github
    • 信仰的博客
Help?

Please contact us on our email for need any support

Support
    首页   ›   python   ›   正文
python

matplotlib模块

2020-05-28 22:09:20
50  0 0

Contents

  • 1 0x00 简介
  • 2 0x01 折线图绘制
  • 3 0x02 CTF中应用
  • 4 0x03 总结学习

0x00 简介

Matplotlib是Python的一个2D图形库,能够生成各种格式的图形(诸如折线图,散点图,直方图等等),界面可交互(可以利用鼠标对生成图形进行点击操作),同时该2D图形库跨平台,即既可以在Python脚本中编码操作,也可以在Jupyter Notebook中使用,以及其他平台都可以很方便的使用Matplotlib图形库,而且生成图形质量较高,甚至可以达到出版级别。

0x01 折线图绘制

1)plt.plot(x,y,format_string,**kwargs) 
x轴数据,y轴数据,format_string控制曲线的格式字串

颜色字符说明标记字符说明标记字符说明标记字符说明风格字符说明
b蓝色.点标记1下花三角标记h竖六边形标记━ 实线
g绿色,像素标记2上花三角标记H横六边形标记━ ━ 破折线
r红色o实心圈标记3左花三角标记+十字标记━ .点划线
c青绿色v倒三角标记4右花三角标记xx标记:虚线
m洋红色^上三角标记s实心方形标记D菱形标记”无线条
y黄色>右三角标记p实心五角标记d瘦菱形标记
k黑色<左三角标记*星型标记|垂直线标记
w白色
#引入pyplt,修改名称为plt
import matplotlib.pyplot as plt
#对应坐标编写折线图
plt.plot([1,2,3,6],[4,5,8,1],'g-s')
#类似print,将图形显示输出
plt.show()

2)在matplotlib中,整个图表为一个figure对象 每一个弹出的小窗口就是一个Figure对象 plt.figure(num,figsize,dpi,**kwargs)其中num为对应窗口数,figsize为窗口大小,dpi为清晰度,值越大越清晰

#引入pyplt,修改名称为plt 
import matplotlib.pyplot as plt
#设置figsize对应宽高
plt.figure(num=3,figsize=(10,10),dpi=10)
#对应坐标编写折线图
plt.plot([1,2,3,6],[4,5,8,1],'g-s')
#类似print,将图形显示输出
plt.show()

3)保存图片plt.savefig(‘路径’)

例:plt.savefig(‘./1.png’),在plt.show前添加,运行后会在当前路径下生成1.png保存刚刚绘制的图形。

4)设置刻度

#引入pyplt,修改名称为plt
import matplotlib.pyplot as plt
#设置figsize对应宽高
plt.figure(figsize=(18,10),dpi=80)
#对应坐标编写折线图
x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
plt.plot(x,y,'g-s')
#设置x轴刻度
plt.xticks(x)
#设置x轴中带有0.5刻度
# x1 = [i/2 for i in range(4,51)]
# plt.xticks(x1)
#设置y轴刻度
plt.yticks(range(min(y),max(y)+1))
#类似print,将图形显示输出
plt.show()

0x02 CTF中应用

[INSHack2019]Drone Motion

题目下载

一道坐标题,通过正则匹配提取坐标,画图即可。要注意的是,因为是画图,所以每个坐标每一位要加上前面的所有坐标

在sensors.log中看到以下内容

给出了坐标点,那么绘图脚本如下,引用root师傅的脚本:

import re

import matplotlib.pyplot as plt
x = []
y = []
z = []
a = []
x2,y2,z2=0,0,0
lines = open("sensors.log").readlines()
for line in lines:
    a.append("".join(re.findall("\[drone\]\(DEBUG\)> dir: \(x=(.*?),y=",line)))
for i in a:
    if i != '':
        x2+=float(i)
        x.append(float(x2))
a.clear()
for line in lines:
    a.append("".join(re.findall("\[drone\]\(DEBUG\)> dir: \(x=.*?,y=(.*?),z=",line)))
for i in a:
    if i != '':
        y2+=float(i)
        y.append(float(y2))
a.clear()
for line in lines:
    a.append("".join(re.findall("\[drone\]\(DEBUG\)> dir: \(x=.*?,y=.*?,z=(.*?)\)",line)))
for i in a:
    if i != '':
        z2+=float(i)
        z.append(float(z2))
ax = plt.plot(x, y,'-')
plt.axis('equal')# 把单位长度都变的一样 
plt.show()
plt.savefig("test.png", dpi=1000) 

0x03 总结学习

更多 matplotlib 模块的学习可参看:https://zhuanlan.zhihu.com/p/33270402

https://blog.csdn.net/qiurisiyu2016/article/details/80187177

评论 (0)

点击这里取消回复。

欢迎您 游客  

近期文章
  • [安洵杯 2019]easy_serialize_php
  • Session反序列化
  • 原生类序列化
  • ThinkPHP框架审计案例(hsycms2.0)
  • ThinkPHP5.0.24框架认识
近期评论
  • CTFSHOW-反序列化专题 – purplet的博客发表在《SoapClient与CRLF组合拳》
文章归档
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年9月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
分类目录
  • Cobalt Strike
  • Crypto
  • CTFWP
  • CTF相关知识点
  • Docker
  • JavaScript
  • Misc
  • MYSQL
  • NodeJS
  • PHP
  • python
  • Web
  • WEB安全漏洞学习
  • XSS
  • 代码审计
  • 内网渗透
  • 数据结构
  • 未分类
  • 计算机小技巧
  • 靶机渗透
功能
  • 登录
  • 项目feed
  • 评论feed
  • WordPress.org
分类目录
Copyright © 2021 网站备案号: 蒙ICP备20000552号-1
smarty_hankin 主题. Designed by hankin
主页
页面
博主
purplet 管理员
努力并有所方向
155 文章 2 评论 18569 浏览
测试
测试