Python基础-画图:matplotlib

news2024/10/3 2:16:06

Python画图主要用到matplotlib这个库。具体来说是pylab和pyplot这两个子库。这两个库可以满足基本的画图需求。

pylab神器:pylab.rcParams.update(params)。这个函数几乎可以调节图的一切属性,包括但不限于:坐标范围,axes标签字号大小,xtick,ytick标签字号,图线宽,legend字号等。

scatter和 plot 函数的不同之处

scatter才是离散点的绘制程序,plot准确来说是绘制线图的,当然也可以画离散点。

scatter/scatter3做散点的能力更强,因为他可以对散点进行单独设置
所以消耗也比plot/plot3大
所以如果每个散点都是一致的时候,还是用plot/plot3好以下
如果要做一些plot没法完成的事情那就只能用scatter了

scatter强大,但是较慢。所以如果你只是做实例中的图,plot足够了。


 plt.ion()用于连续显示。

# plot the real data
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_data, y_data)
plt.ion()#本次运行请注释,全局运行不要注释
plt.show()

首先在python中使用任何第三方库时,都必须先将其引入。即:

import matplotlib.pyplot as plt
  • 1

或者:

from matplotlib.pyplot import *

1.建立空白图

fig = plt.figure()

也可以指定所建立图的大小

fig = plt.figure(figsize=(4,2))

也可以建立一个包含多个子图的图,使用语句:

plt.figure(figsize=(12,6))
plt.subplot(231)
plt.subplot(232)
plt.subplot(233)
plt.subplot(234)
plt.subplot(235)
plt.subplot(236)
plt.show()


其中subplot()函数中的三个数字,第一个表示Y轴方向的子图个数,第二个表示X轴方向的子图个数,第三个则表示当前要画图的焦点。

当然上述写法并不是唯一的,比如我们也可以这样写:

fig = plt.figure(figsize=(6, 6))
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222)
ax3 = fig.add_subplot(223)
ax4 = fig.add_subplot(224)
plt.show()

plt.subplot(111)和plt.subplot(1,1,1)是等价的。意思是将区域分成1行1列,当前画的是第一个图(排序由行至列)。

plt.subplot(211)意思就是将区域分成2行1列,当前画的是第一个图(第一行,第一列)。以此类推,只要不超过10,逗号就可省去。

可以看到图中的x,y轴坐标都是从0到1,当然有时候我们需要其他的坐标起始值。 
此时可以使用语句指定:

ax1.axis([-1, 1, -1, 1])

或者:

plt.axis([-1, 1, -1, 1])

效果如下:

 

2.向空白图中添加内容,想你所想,画你所想

首先给出一组数据:

x = [1, 2, 3, 4, 5]
y = [2.3, 3.4, 1.2, 6.6, 7.0]

A.画散点图*

plt.scatter(x, y, color='r', marker='+')
plt.show()

效果如下:

这里的参数意义:

  1. x为横坐标向量,y为纵坐标向量,x,y的长度必须一致。
  2. 控制颜色:color为散点的颜色标志,常用color的表示如下:

    b---blue   c---cyan  g---green    k----black
    m---magenta r---red  w---white    y----yellow

    有四种表示颜色的方式:

    • 用全名
    • 16进制,如:#FF00FF
    • 灰度强度,如:‘0.7’
  3. 控制标记风格:marker为散点的标记,标记风格有多种:

    .  Point marker
    ,  Pixel marker
    o  Circle marker
    v  Triangle down marker 
    ^  Triangle up marker 
    <  Triangle left marker 
    >  Triangle right marker 
    1  Tripod down marker
    2  Tripod up marker
    3  Tripod left marker
    4  Tripod right marker
    s  Square marker
    p  Pentagon marker
    *  Star marker
    h  Hexagon marker
    H  Rotated hexagon D Diamond marker
    d  Thin diamond marker
    | Vertical line (vlinesymbol) marker
    _  Horizontal line (hline symbol) marker
    +  Plus marker
    x  Cross (x) marker

B.函数图(折线图)

数据还是上面的。

fig = plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.plot(x, y, color='r', linestyle='-')
plt.subplot(122)
plt.plot(x, y, color='r', linestyle='--')
plt.show()

效果如下: 

这里有一个新的参数linestyle,控制的是线型的格式:符号和线型之间的对应关系

-      实线
--     短线
-.     短点相间线
:     虚点线

另外除了给出数据画图之外,我们也可以利用函数表达式进行画图,例如:y=sin(x)

from math import *
from numpy import *
x = arange(-math.pi, math.pi, 0.01)
y = [sin(xx) for xx in x]
plt.figure()
plt.plot(x, y, color='r', linestyle='-.')
plt.show()

效果如下:

C.扇形图

示例:

import matplotlib.pyplot as plt
y = [2.3, 3.4, 1.2, 6.6, 7.0]
plt.figure()
plt.pie(y)
plt.title('PIE')
plt.show()

效果如下:

D.柱状图bar

示例:

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2.3, 3.4, 1.2, 6.6, 7.0]

plt.figure()
plt.bar(x, y)
plt.title("bar")
plt.show()

效果如下:

 

E.二维图形(等高线,本地图片等)

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.image as mpimg
# 2D data

delta = 0.025
x = y = np.arange(-3.0, 3.0, delta)
X, Y = np.meshgrid(x, y)
Z = Y**2 + X**2
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.contour(X, Y, Z)
plt.colorbar()
plt.title("contour")

# read image

img=mpimg.imread('marvin.jpg')

plt.subplot(122)
plt.imshow(img)
plt.title("imshow")
plt.show()
#plt.savefig("matplot_sample.jpg")

效果图:

F.对所画图进行补充

__author__ = 'wenbaoli'


import matplotlib.pyplot as plt
from math import *
from numpy import *
x = arange(-math.pi, math.pi, 0.01)
y = [sin(xx) for xx in x]
plt.figure()
plt.plot(x, y, color='r', linestyle='-')
plt.xlabel(u'X')#fill the meaning of X axis
plt.ylabel(u'Sin(X)')#fill the meaning of Y axis
plt.title(u'sin(x)')#add the title of the figure

plt.show()

效果图: 

画网络图,要用到networkx这个库,下面给出一个实例:

import networkx as nx

import pylab as plt

= nx.Graph()

g.add_edge(1,2,weight = 4)

g.add_edge(1,3,weight = 7)

g.add_edge(1,4,weight = 8)

g.add_edge(1,5,weight = 3)

g.add_edge(1,9,weight = 3)

g.add_edge(1,6,weight = 6)

g.add_edge(6,7,weight = 7)

g.add_edge(6,8,weight = 7

g.add_edge(6,9,weight = 6)

g.add_edge(9,10,weight = 7)

g.add_edge(9,11,weight = 6)

fixed_pos = {1:(1,1),2:(0.7,2.2),3:(0,1.8),4:(1.6,2.3),5:(2,0.8),6:(-0.6,-0.6),7:(-1.3,0.8), 8:(-1.5,-1), 9:(0.5,-1.5), 10:(1.7,-0.8), 11:(1.5,-2.3)} #set fixed layout location

#pos=nx.spring_layout(g) # or you can use other layout set in the module

nx.draw_networkx_nodes(g,pos = fixed_pos,nodelist=[1,2,3,4,5],

node_color = 'g',node_size = 600)

nx.draw_networkx_edges(g,pos = fixed_pos,edgelist=[(1,2),(1,3),(1,4),(1,5),(1,9)],edge_color='g',width = [4.0,4.0,4.0,4.0,4.0],label = [1,2,3,4,5],node_size = 600)

nx.draw_networkx_nodes(g,pos = fixed_pos,nodelist=[6,7,8],

node_color = 'r',node_size = 600)

nx.draw_networkx_edges(g,pos = fixed_pos,edgelist=[(6,7),(6,8),(1,6)],width = [4.0,4.0,4.0],edge_color='r',node_size = 600)

nx.draw_networkx_nodes(g,pos = fixed_pos,nodelist=[9,10,11],

node_color = 'b',node_size = 600)

nx.draw_networkx_edges(g,pos = fixed_pos,edgelist=[(6,9),(9,10),(9,11)],width = [4.0,4.0,4.0],edge_color='b',node_size = 600)

plt.text(fixed_pos[1][0],fixed_pos[1][1]+0.2, s = '1',fontsize = 40)

plt.text(fixed_pos[2][0],fixed_pos[2][1]+0.2, s = '2',fontsize = 40)

plt.text(fixed_pos[3][0],fixed_pos[3][1]+0.2, s = '3',fontsize = 40)

plt.text(fixed_pos[4][0],fixed_pos[4][1]+0.2, s = '4',fontsize = 40)

plt.text(fixed_pos[5][0],fixed_pos[5][1]+0.2, s = '5',fontsize = 40)

plt.text(fixed_pos[6][0],fixed_pos[6][1]+0.2, s = '6',fontsize = 40)

plt.text(fixed_pos[7][0],fixed_pos[7][1]+0.2, s = '7',fontsize = 40)

plt.text(fixed_pos[8][0],fixed_pos[8][1]+0.2, s = '8',fontsize = 40)

plt.text(fixed_pos[9][0],fixed_pos[9][1]+0.2, s = '9',fontsize = 40)

plt.text(fixed_pos[10][0],fixed_pos[10][1]+0.2, s = '10',fontsize = 40)

plt.text(fixed_pos[11][0],fixed_pos[11][1]+0.2, s = '11',fontsize = 40)

plt.show()

结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32 OTA

装好Arduino环境后&#xff0c;做了一个遥控小车&#xff1a; 1、uni-app 包装 nipplejs (Nipplejs by yoannmoinet)做了一个简单的摇杆&#xff0c;调用ESP32的WebServer接口&#xff0c;控制小车 2、ESP32 连上路由的WiFI&#xff0c;用WebServer开发了一个接口&#xff0c…

PG::Wpwn

nmap -Pn -p- -T4 --min-rate1000 192.168.225.123 nmap -Pn -p 22,80 -sCV 192.168.225.123 查看80端口的页面 尝试枚举路径 发现了/wordpress路径 使用wpscan扫描 wpscan --url http://192.168.225.123/wordpress/ -e ap 使用exploit-db搜索“social warfare” https:/…

我国原油期货行业趋势:消费量上升及鼓励政策落地 成交额将继续增长

原油期货是最重要的石油期货&#xff0c;世界上重要的原油期货合约有4个&#xff1a;纽约商业交易所&#xff08;NYMEX&#xff09;的轻质低硫原油即“西德克萨斯中质油”期货合约&#xff1b;迪拜商品交易所的高硫原油期货合约&#xff1b;伦敦国际石油交易所&#xff08;ICE&…

【AIOT】蓝牙调研

经典蓝牙模块&#xff08;BT&#xff09;&#xff1a;泛指支持蓝牙协议在4.0以下的模块&#xff0c;一般用于数据量比较大的传输&#xff0c;如&#xff1a;语音、音乐等较高数据量传输。经典蓝牙模块可再细分为&#xff1a;传统蓝牙模块和高速蓝牙模块。传统蓝牙模块在2004年推…

非零基础自学Golang 第8章 包管理 8.1 工作区

非零基础自学Golang 文章目录非零基础自学Golang第8章 包管理8.1 工作区8.1.1 工作区结构8.1.2 GOPATH8.1.3 GOROOT8.1.4 GOBIN第8章 包管理 对于大部分编程语言来说&#xff0c;代码包都是最有效的代码管理方式&#xff0c;Go语言也是使用包来管理代码的。如同其他语言一样&a…

WPF 3D 点光源学习

先画一个平面&#xff0c;物体具有黄色的材质&#xff1b;不添加灯光&#xff0c;显示如下&#xff0c; 加入一个点光源&#xff0c;位置(1,1,1)、颜色白色&#xff0c;如下&#xff0c;照亮了物体&#xff0c;看到物体的材质&#xff1b; 点光源是从斜上方照过来的&#xff0…

SSM框架+Layui框架基础业务逻辑(一)

1.获取验证码以及验证码变换 // 改变验证码图片function chageImg(){document.getElementById("captchaPic").src"/captcha/getCode?time"new Date().getTime()} import cn.hutool.captcha.LineCaptcha; import org.springframework.stereotype.Controll…

HCIP-Cloud+Service+DevOps+Engineer+V2.0第二章持续规划与设计

学习总结&#xff0c;思维导图整理&#xff0c;免费分享。侵权删除 本博文为HCIP-Cloud Service DevOps Engineer V2.0培训系列内容&#xff0c;[完整学习路径](https://education.huaweicloud.com/programs/ff24fd88-c9f3-4045-9ecd-94afb7eac6ba/about)&#xff1b; 想进一…

[附源码]Python计算机毕业设计公立医院绩效考核系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

【Azure 架构师学习笔记】-Azure Logic Apps(1)-简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Logic Apps】系列。 前言 Azure Logic apps的学习也研究源自于最近项目的需要&#xff0c;对于新技术的学习&#xff0c;可以先了解What&#xff0c; why两部分&#xff0c; 也就是这是什么&#xff0c;为什么要用。另…

gin学习

文章目录零、知识补充GOPROXY地址一、准备工作1、安装gin包&#xff08;mod模式&#xff09;2、文档3、测试 hello gin二、GET POST PUT DELETE请求的使用1、修改端口号2、GET 查3、POST 增4、DELETE 删5、PUT 改6、如何取出参数6.1、GET6.2、POST DELETE PUT6.3、URI三、Bind模…

大二《web课程设计》网页制作HTML个人主题青春网站(带psd)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

什么是零拷贝, 从 Java 到 Netty

前言 零拷贝是老生常谈的话题了, 不管是Kafka还是Netty都用到了零拷贝的知识, 本篇着重讲解了什么是零拷贝, 同时在Java和Netty中分别是怎么实现零拷贝的 什么是零拷贝 零拷贝是指计算机在执行IO操作的时候, CPU不需要将数据从一个存储区复制到另一个存储区, 进而减少上下文切…

SDN网络中的转发数据和数据传输

数据驱动的网络 从数据驱动的角度来看网络&#xff0c;会发现一张现实中的网络存在着各种数据。设计和管理一张网络&#xff0c;主要是设计数据&#xff0c;存储数据&#xff0c;管理数据和分析数据。网络数据的规模、复杂度和变化速度&#xff0c;这3方面决定了数据处理的难度…

uni-app+uView实现多图上传功能。

最近使用uni-app开发一个多平台的小项目&#xff0c;项目需要多图上传&#xff0c;uni-app前端UI框架使用了uView UI。结合uView的Upload组件&#xff0c;实现了多图上传功能&#xff0c;多图上传可以限制上传的个数&#xff0c;以及选择设为封面功能。 目录效果图uView Upload…

html简洁漂亮的个人简历,个人主页,个人简介网页版(源码)

文章目录1.设计来源1.1 主界面1.2 基本资料1.3 专业技能1.4 教育经历1.5 工作经验2.效果和源码2.1 动态效果2.2 源代码源码下载作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/128349160 html简洁漂亮的个人简历,个人主页…

[深度学习基础]2.pycharm联合annaconda生成虚拟环境测试yoloV7

“戏过曼巴晃过神”1. 环境说明2. yoloV7的准备和说明2.1 yoloV7源码2.2 权重文件3. anaconda生成配套虚拟环境4. Pycharm联合conda虚拟环境1. 环境说明 承接上一篇&#xff0c;我们的软件如下&#xff08;我拿笔记本跑&#xff09;&#xff1a; python:3.9pycharm: 22.3GPU:…

【C语言进阶】参加面试怎能不会结构体?进来学,手把手教会你结构体的原理与使用

目录 &#x1f929;前言&#x1f929;&#xff1a; &#x1f92f;正文&#xff1a;结构体&#x1f92f;&#xff1a; 1.结构概述&#x1f357;&#xff1a; 2.结构的声明&#x1f354;&#xff1a; 3.特殊声明&#x1f35f;&#xff1a; 4.结构的自引用&#x1f363;&#xf…

32位处理器中,通过汇编指令实现64位数据的加减运算

32位处理器一次可以处理的数据是32bit&#xff0c;但如果是64bit的数据&#xff0c;依然可以运算&#xff0c;只是不能一步到位。下面以加法为例。 目录 1、基本思路 2、具体实现 (1) 将数据保存到寄存器 (2) 低32位相加 (3) 高32位相加 3、完整汇编代码 1、基本思路 一…

ODN 2006丨艾美捷CpG ODN系列说明书

艾美捷CpG ODN系列——ODN 2006&#xff1a;具有硫代磷酸酯骨架的CpG寡脱氧核苷酸&#xff08;B型&#xff09;。人和小鼠TLR9&#xff08;Toll样受体9&#xff09;的特异性配体。 艾美捷CpG ODN 丨ODN 2006化学性质&#xff1a; 序列&#xff1a;5-tcgtcttttgtcgttttgtgtcgtt…