IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Matplotlib绘图程序封装 -> 正文阅读

[Python知识库]Matplotlib绘图程序封装

程序功能:已封装的python中的Matplotlib绘图模块,可绘制科技论文中简单的数据可视化。可实现绘制曲线图、柱状图。可实现线条类型、颜色、宽度的设置、可实现对刻度线坐标字体字号设置、可实现图例、网格设置、可实现图中图等其他设置。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from pylab import *
import numpy as np
from matplotlib.font_manager import FontProperties


#加中文语句

# plt.rcParams['font.sans-serif'] = ['SimHei']   # 解决中文乱码
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False     # 用来正常显示负号
color = ['b','g','r','c','m','y','k','w'] #颜色选择
style = ['-','--','-.',':','.',',','o','v',]#线条类型选择
loc=['upper right','upper left','lower left','lower right','right','center left',
     'center right','lower center','upper center','center']  #图例位置选择
'''
titlename:图片标题名称
xlim:设置x坐标轴的范围(可加可不加)
ylim:设置y坐标轴的范围(可加可不加)
xlabel:图片x轴名称
ylabel:图片y轴名称
ticks:设置关键点的记号标签
a,b:绘图的图片的长宽
'''
class Fig:
    def __init__(self,a,b):
        # self.figure=plt.figure(figsize=(a, b)) #画图中图使用,创建图中图界面并设置图片长和宽
        self.figure,self.ax = plt.subplots(figsize=(a,b))
        self.show=plt.show()
        
  #绘图
    '''
    x:输入x的数据代表x轴长度时间
    y:输出y的数据是一个列表,如[d,e,f],与输入x个数对应,也是代表三组数据,出三条线
    lable:图例的名称 是一个列表,里面是字符串,如["第一个图例","第二个图例","第三个图例"]
    linewidth:线条宽度
    color:线条颜色,是一个列表,里面是字符串。如["r","g","y"]
    style:线条类型选择
    leged:图例的位置(1,1)这种类型
    titlename:图的标题名
    xlabel:x轴名称
    ylabel:y轴名称
    a:是否选择一张图中出多个图,1代表选择,其他代表不选择
    b:plt.subplot(b,c,d)函数里的画几个图
    c:plt.subplot(b,c,d)画几列
    d:plt.subplot(b,c,d)里的第几个
    e:是否选择自己设置坐标轴刻度,1代表选择,其他数字不选择
    f:x轴坐标轴刻度范围,(a,b)这种形式,从左到右
    g:y轴坐标轴刻度范围,(a,b)这种形式,从下到上
    font:设置每个图例的字体字号,与输入y对应,为列表数据,可选择font1(英文),font2(中文宋体)
    fony:为y轴坐标字体选择,可选择font1(英文),font2(中文宋体)
    '''
    def fig(self,x,y,lable,linewidth,color,style,leged,titlename,xlabel,ylabel,a,b,c,d,e,f,g,font,fonty):
        #判断是否好几个图
           if a == 1:
                plt.subplot(b,c,d)
           #设置字体为,字号
           font1 = FontProperties(fname=r"c:\windows\fonts\times.ttf",size=25)#英文Times New Roman字体
           font2 = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=25)#中文宋体
           #为方便选择坐标刻度字体
           for i in range(len(font)):
               if font[i]==1:
                   font[i]=font1
               else:
                    font[i]=font2
           #判断是否需要自制坐标轴刻度,1代表需要
           if e==1:
               plt.xlim(f)#设置坐标轴的刻度,范围 例(0,10)
               plt.ylim(g)#设置坐标轴的刻度,范围 例(-1,1)     
           for i in range(len(y)):#绘制y条线
                plt.plot(x,y[i],label=lable[i],linestyle=style[i],linewidth=linewidth,color=color[i])
                # plt.legend(loc=loc[0],bbox_to_anchor=leged,prop=font[i])
#图例参数解析 bbox_to_anchor=(num1,num2) num1 用于控制 legend 的左右移动,值越大越向右边移动,num2 用于控制 legend 的上下移动,
# 值越大,越向上移动。用于微调图例的位置。
                #为方便选择坐标y轴刻度字体设置
           if fonty==1:
                    fonty=font1
           else:
                    fonty=font2
           plt.legend(loc=loc[0],bbox_to_anchor=leged,prop=font[0])#加图例 位置信息,字体,字体大小
           plt.title(titlename)
           plt.xlabel(xlabel,fontproperties=font1,size=30)#图片x轴名称,字体,字号
           plt.ylabel(ylabel,fontproperties=fonty,size=35)#图片y轴名称,字体,字号
           # 添加网格显示
           plt.grid(linestyle="-", alpha=0.8)
           plt.tick_params(direction='in',labelsize=25)#坐标字体大小设置 direction='in'刻度线显示在绘图区内测
           #如下为设置坐标轴刻度的字体
           labels = self.ax.get_xticklabels() + self.ax.get_yticklabels()
           [label.set_fontname('Times New Roman') for label in labels]
         
   #绘制图中图  
    '''
    left1,bottom1,width1,height1 分别代表图中图距离y,x轴的距离,图中图本身的长度和宽度
    x,y 代表 图中图需要画出的x,y的图形
    linewidth,color  图中图中线条的宽度和颜色
    xlim,ylim  图中图所要绘制的x,y的大小长高
    xlabel,ylabel,title  图中图中横坐标,纵坐标 标题的题目
    '''
    def image(self,left1,bottom1,width1,height1,x,y,linewidth,color,style,xlim,ylim,xlabel,ylabel,title):
            # left1,bottom1,width1,height1=left1,bottom1,width1,height1#图中图位置和宽高
            ax2=self.figure.add_axes([left1,bottom1,width1,height1])
            for i in range(len(y)):#图中图中绘制y条线
                plt.plot(x,y[i],linewidth=linewidth,linestyle=style[i],color=color[i])
                
            plt.grid(linestyle="-", alpha=0.8)    #加网格
            plt.xlim(xlim)#图中图的横坐标范围
            plt.ylim(ylim)#图中图的纵坐标范围
            ax2.set_xlabel(xlabel) #设置x轴名字
            ax2.set_ylabel(ylabel)#设置y轴名字
            ax2.set_title(title)#设置题目
            plt.tick_params(direction='in',labelsize=15)#坐标字体大小设置
            #如下为设置坐标轴刻度的字体样式
            labels = ax2.get_xticklabels() + ax2.get_yticklabels()
            [label.set_fontname('Times New Roman') for label in labels]
    #绘制散点图
    def figur(self,x,y,color,label):#x,y,颜色,图例名称
        plt.scatter(x,y,c=color,label=label)#画散点图
        plt.legend(loc='upper left', frameon=False)#加图例
    #绘制柱状图
    '''
    x:x轴数据
    y:y轴数据
    color:柱状图颜色
    title:图标题目
    ylabel:y轴名称
    xlabel:x轴名称
    '''
    def cylinder(self,left1,bottom1,width1,height1,x,y,color,width,ylim,title,xlabel,ylabel,a,b,c):
        ax2=self.figure.add_axes([left1,bottom1,width1,height1])
        plt.ylim(ylim)#图中图的纵坐标范围
        font1 = FontProperties(fname=r"c:\windows\fonts\times.ttf",size=20)
        font2 = FontProperties(fname=r"c:\windows\fonts\simsun.ttc",size=20)#中文宋体
        plt.bar(x, y, color =  color, width=width,align =  'center') 
        for x, y in enumerate(y):
            plt.text(x, y , '%s' % y, ha='center', va='bottom',fontproperties=font1,size=20)#柱状图上方数字显示
        plt.ylim(ylim)#图中图的纵坐标范围
        plt.title(title) 
        plt.ylabel(ylabel) 
        plt.xlabel(xlabel,fontproperties=font2) 
        plt.grid(linestyle="-", alpha=0.7)
        plt.tick_params(direction='in',labelsize=16)#坐标字体大小设置 direction='in'刻度线显示在绘图区内测
        plt.xticks(fontproperties = font1,size = 25) #选择x轴坐标字体设置
        labels = ax2.get_xticklabels() + ax2.get_yticklabels()
        [label.set_fontname('Times New Roman') for label in labels]
        #添加文字,第一个参数是x轴坐标,第二个参数是y轴坐标,以数据的刻度为基准,c表示要加的文字
        # plt.text(a,b,c,fontdict={'size':'16.5','color':'k'})   
        plt.text(a,b,c,fontproperties=font2) #图上文字显示字体字号设置
        plt.show()


# #测试代码
# time = np.arange(0, 10,0.01)
# sin = np.sin(time)
# cos = np.cos(time)
# tt=Fig(8,5)

# #demo示例

# tt.fig(time,[sin,cos],['sin(x)','cos(x)'],2,['r','b'],['-','-.'],(1,1),
#         " ",'Time(sec)','yaw Angle(rad)',2,3,1,2,1,(0,10),(-1.5, 2.5))
# #绘制图中图
# tt.image(0.3,0.65,0.3,0.2,time,[sin,cos],2,['r','b'],['-','-.'],
#           (2,8),(-0.8,0.8),"","","")


# # x=['ff','2','3','4','5','6']
# # y=[81.7315,32.9466,6.2922,86.9391,55.3920,7.9238]
# # tt.cylinder(0.3,0.65,0.3,0.2,x,y,'b',2,(-1,1),'','','')

















                   

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:10:07  更:2021-10-26 12:11:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:22:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码