#!/usr/bin/env python
# -*- coding:utf-8 -*- import os import numpy as np
import matplotlib as mplt
from matplotlib import pyplot as plt
from matplotlib.ticker import * # 整个图像为1个figure对象,figure对象包含多个Axes对象,每个Axes对象都拥有自己坐标轴的绘图区域
# 调用figure时,则调用plot,然后plot调用gca,获取axes绘图区域
# 然后gca调用gcf,获取当前figure,如为空则自动生成 figure,相当于调用 subplots
# title-图像标题 Axis-坐标轴 Axis Label-坐标轴标注 Tick-刻度线 Tick Label-刻度注释
# 关系如下
# fig---ax
# ---title
# ---data
# ---xaxis
# ---tick
# ---tick label
# ---label
# ---yaxis
# ---tick
# ---tick label
# ---label # matplotlib.get_config() 获取当前配置
# 用户matplotlib配置文件路径
path=mplt.get_configdir()
print(path) # 当前matplotlib配置文件路径
path2=mplt.matplotlib_fname()
print(path2) # 系统配置文件存放路径
path3=os.getcwd()
print(path3) # 读取配置文件内容
p=mplt.rcParams
print(p) # 中文乱码处理 正常显示中文标签 及正负号
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False # 全局关闭
# plt.rcParams.update({'axes.formatter.useoffset':False})
# 画图流程:创建Figure对象->1个或多个Axes或Subplot对象->调用Axies创建各类Artists来画图 # 这里使用的是matplotlib.pyplot 去画图
# 图像 指整个窗口内容 子图值图像中的各个图
# 图1
# 步骤1-创建一个 2*2 的点图像 分辨率为 80 # 参数说明
# 图像数量 num=None, # autoincrement if None, else integer from 1-N
# 图像的长和宽 figsize=None, # defaults to rc figure.figsize
# 分辨率 dpi=None, # defaults to rc figure.dpi
# 区域背景色 facecolor=None, # defaults to rc figure.facecolor
# 区域边缘色 edgecolor=None, # defaults to rc figure.edgecolor
# 是否绘制图像边缘 # frameon=True,
# FigureClass=Figure,
# clear=False,
# **kwargs
# f,axs=plt.subplots(2,2,figsize=(15,15))
fig=plt.figure(20*20,dpi=80) # 步骤2-设置子图位置 几行几列的网格 第1个参数:1行 第2个参数:1列 第3个参数:图形在网格的位置 # 多个子图组成大图
# fig=plt.figure()->plt.subplot()->plot.plot()->plot.show() # 子图悬浮在大图上
# fig=plt.figure()->ax=fig.add_axes(位置列表)或ax=fig.axes()->ax.plot()->plt.show()
# fig=plt.figure()->fig.add_subplot()->p=plt.Rectangle()多个->fig.add_subplot().add_patch(p)->fig.canvas.draw()->plot.show() # plt.subplot(1,1,1)
plt.subplot(111) # 步骤3-设置线图属性-自定义x y轴
# 坐标轴对象 axes 可放置在图像的任意位置
# 记号位置设置 Tick Locators 记号格式化操作 Tick Formatters # 方式1 生成数据的方法 定义新刻度的范围和个数
x=np.linspace(-np.pi,np.pi,256,endpoint=True)
c,s=np.cos(x),np.sin(x) # 绘制曲线 颜色 线宽 线的风格 大图对应的小图标签
# 线的风格 实线 - 破折线 -- 点线 -. 虚线 : 不显示 None '' ' ' # 线条标记
# 圆圈 o 小菱形 d 菱形 D
# 正方形 s 五边形 p 六边形1 h 六边形2 H 八边形 8
# 水平线 _ 竖线 | 加号 + 点 . 像素 , 星号 * x X 无 None '' ' '
# 1角朝上三角形 ^ 1角朝下三角形 v 1角朝左三角形 < 1角朝右三角形 > # 线的颜色 红 r 黄 y 白 w 绿 g 蓝 b 青 c 洋红 m 黑 k 支持16进制'#eeefff'或3元色组(0.3,0.3,0.3)
# 颜色 线宽 线的风格(颜色+线型) 大图对应的小图标签 可用$$包裹,如$sin(x)$
plt.plot(x,c,color='blue',linewidth=2.5,linestyle='-',label='cosine')
plt.plot(x,s,color='red',linewidth=2.5,linestyle='-',label='sine') # 属性设置使用set_属性 pyplot.setp()函数 属性获取使用 get_属性 pyplot.getp() # 方式2
# lines,=plt.plot(1,6,'-')
# lines.set_antialiased(False) # 坐标取值范围
# plt.axis([xmin,xmax,ymin,ymax]) # 步骤4-1-设置x轴 y轴范围
# 获得当前x轴 y轴范围值
xmin,xmax=plt.xlim()
ymin,ymax=plt.ylim() # 横轴的上下限
plt.xlim(xmin*1.5,xmax*1.5) # 纵轴的上下限
plt.ylim(ymin*1.5,ymax*1.5) # 步骤4-2-设置刻度 刻度位置 间隔 格式
ax=plt.gca() # 关闭简略的间隔标注
ax.get_xaxis().get_major_formatter().set_useOffset(False) # 设置横轴标记号
# py.xticks(np.linspace(-4,4,9,endpoint=True))
# py.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi]) # 设置横轴标号标签
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$']) # 设置纵轴标记号
# plt.yticks(np.linspace(-1,1,5,endpoint=True))
# plt.yticks([-1,0,+1]) # 设置纵轴标号标签
plt.yticks([-1,0,+1],[r'$-1$',r'$0$',r'$+1$']) # 返回一个fig图像 和 一个 ax的 array列表
# fig,ax=plt.subplots(2,2)
# ax=plt.gca() # 步骤4-3-设置主 次刻度 及注释 2.5的倍数 5的倍数 0.5的倍数 1的倍数
xmin=MultipleLocator(2.5)
xmax=MultipleLocator(5)
xformat=FormatStrFormatter('%5.1f') ymin=MultipleLocator(0.5)
ymax=MultipleLocator(1)
yformat=FormatStrFormatter('%1.1f') # x轴 主刻度 次刻度
ax.xaxis.set_major_locator(xmax)
ax.xaxis.set_major_formatter(xformat)
ax.xaxis.set_minor_locator(xmin) # y轴 主刻度 次刻度
ax.yaxis.set_major_locator(ymax)
ax.yaxis.set_major_formatter(yformat)
ax.yaxis.set_minor_locator(ymin) # 网格刻度类型which major minor both
# 绘制哪个网格线xaxis yaxis x y both
ax.xaxis.grid(True, which='major')
ax.yaxis.grid(True,which='minor') # 步骤5-移动坐标 剩下下面和左边的坐标-看实际需要配置
# 设置对应的边框是否显示 及边框颜色 边框位置:left right bottom top none
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none') # x轴 设置刻度 top bottom both default none 位置 data axes outward
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0)) # y轴
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0)) # 图像上的数据显示更清晰
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(16)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65)) # 步骤6-增加图例
plt.legend(loc='upper left') # 设置图像外侧与图像间隔距离
plt.subplots_adjust(left=0.2, bottom=0.2, right=0.8, top=0.8,hspace=0.2,wspace=0.3) # 图像标题
plt.title('图1') # 显示图像
plt.show()

python3绘图示例6-2(基于matplotlib,绘图流程介绍及设置等)的更多相关文章

  1. python3绘图示例6-1(基于matplotlib,绘图流程介绍及设置等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import os import pylab as pyimport numpy as npfrom matpl ...

  2. python3绘图示例5(基于matplotlib:正弦图等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import numpy as npimport pylab as pyimport matplotlib as ...

  3. python3绘图示例4(基于matplotlib:箱线图、散点图等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- from matplotlib.pyplot import * x=[1,2,3,4]y=[5,4,3,2] # ...

  4. python3绘图示例2(基于matplotlib:柱状图、分布图、三角图等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- from matplotlib import pyplot as pltimport numpy as npim ...

  5. python3绘图示例1(基于matplotlib)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import numpy as npimport matplotlib.pyplot as pltimport ...

  6. python3绘图示例3(基于matplotlib:折线图等)

    #!/usr/bin/env python# -*- coding:utf-8 -*-from pylab import *from numpy import *import numpy # 数据点图 ...

  7. python基于matplotlib绘图

    import math import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import F ...

  8. Matplotlib常用绘图示例

    一.Matplotlib介绍 Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过Matplotlib,开发者可以仅需要几行代码,便可 ...

  9. 理解matplotlib绘图

    matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包.Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件.它能让使用者很轻松地将数据图形化 ...

随机推荐

  1. netty结合websocket使用

    首先需要在后台建立netty服务器启动类; package com.cxy; import io.netty.bootstrap.ServerBootstrap; import io.netty.ch ...

  2. README.md使用

    1.标题: # 一级标题 ## 二级标题 ### 三级标题 2.换行: <br> 3.代码: ``` 代码在中间 ``` 4.表格: 表头 | 表头 | 表头 ---- | ----- | ...

  3. sqlmap用法

    用法 Usage: python sqlmap.py [options] Options: -h, --help Show basic help message and exit -hh Show a ...

  4. 【实例分割】PANet简单笔记

    PANet是18年的一篇CVPR,作者来自港中文,北大,商汤与腾讯优图,PANET可看作Mask-RCNN+,是在Mask-RCNN基础上做的几处改进. 论文地址:https://arxiv.org/ ...

  5. 取消 windows2008 server 禁ping

    windows 2008 server 默认是禁ping的,取消方法如下: 依次打开: 服务器管理器——配置——高级安全windows防火墙——入站规则 找到“文件和打印机共享(回显请求-ICMPv4 ...

  6. Java快速IO(ACM)必备

    en.... 无非用到的是 1. new Scanner(System.in); 2.new BUfferReader(new InputStreamReader(System.in); 3.Syst ...

  7. Canvas制作动态进度加载水球

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_方法执行

    [前言] 方法执行前,CLR 会检测方法内代码引用的所有类型.同时 CLR 会分配一个内部数据结构,用来管理对所有引用的类型的访问. 首次执行方法时,托管程序集会把 IL 转换成本地 CPU 指令,并 ...

  9. hdu1430 魔板(康拓展开 bfs预处理)

    魔板 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  10. day_12 内置函数

      1. 内置函数 1.双下划线方法的使用 1.原来it=lst.__iter__() print(it__next__()) 2.现在it=iter(list) print(next(it)) 2. ...