matplotlib.pyplot常用画图方式函数封装(一)——.plot绘制折线图及设置坐标轴箭头完美解决

  • py.plot常见绘图设置函数封装
    • 绘制函数图像(完美解决坐标轴添加箭头)
    • 绘制折线图

py.plot常见绘图设置函数封装

本文主要针对运用py.plot作图时的常用设置进行了函数封装,一般来说,py.plot常用作绘制函数图像和折线图,对于绘制函数图像时的坐标轴箭头问题,本文做出了完美解决。进行自主封装的函数设定了许多默认参数,调用者可根据自己的具体业务进行设定。

绘制函数图像(完美解决坐标轴添加箭头)

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import font_manager
import seaborn as sns# 设置字体
ft = font_manager.FontProperties(fname = "C://Windows/Fonts/simsun.ttc",size = 18)
def function_fig(df,grid = True,save = False,dpi_value = 72,fig_size = (20,8),show = True,arrow = True):# 初始化画布figure = plt.figure(figsize = fig_size,dpi = dpi_value)ax = figure.add_subplot(111)# 绘图plt.plot(df.iloc[:,0],df.iloc[:,1],color = "blue",linewidth = 2,linestyle = "-")# 设置坐标轴显示plt.xticks(fontproperties = ft,size = 22)plt.yticks(fontproperties = ft,size = 22)# 设置坐标轴显示范围plt.axis([-max(abs(df.iloc[:,0].min()-0.05*(df.iloc[:,0].max()-df.iloc[:,0].min())),abs(df.iloc[:,0].max()+0.05*(df.iloc[:,0].max()-df.iloc[:,0].min()))),max(abs(df.iloc[:,0].min()-0.05*(df.iloc[:,0].max()-df.iloc[:,0].min())),abs(df.iloc[:,0].max()+0.05*(df.iloc[:,0].max()-df.iloc[:,0].min()))),-max(abs(df.iloc[:,1].min()-0.05*(df.iloc[:,1].max()-df.iloc[:,1].min())),abs(df.iloc[:,1].max()+0.05*(df.iloc[:,1].max()-df.iloc[:,1].min()))),max(abs(df.iloc[:,1].min()-0.05*(df.iloc[:,1].max()-df.iloc[:,1].min())),abs(df.iloc[:,1].max()+0.05*(df.iloc[:,1].max()-df.iloc[:,1].min())))])# 去除上、右边框ax = plt.gca()ax.spines["top"].set_color("none")ax.spines["right"].set_color("none")# 调整x轴和y轴ax.spines["left"].set_position(("data",0))ax.spines["bottom"].set_position(("data",0))y_max = max(abs(df.iloc[:,1].min()-0.05*(df.iloc[:,1].max()-df.iloc[:,1].min())),abs(df.iloc[:,1].max()+0.05*(df.iloc[:,1].max()-df.iloc[:,1].min())))x_max = max(abs(df.iloc[:,0].min()-0.05*(df.iloc[:,0].max()-df.iloc[:,0].min())),abs(df.iloc[:,0].max()+0.05*(df.iloc[:,0].max()-df.iloc[:,0].min())))# 设置x轴和y轴的箭头ax.arrow(0, (1-0.04*fig_size[0]/fig_size[1])*y_max, 0, 0.04*fig_size[0]/fig_size[1]*y_max,head_width=0.04*fig_size[1]/fig_size[0]*x_max,head_length=0.04*fig_size[0]/fig_size[1]*y_max,fc='black',length_includes_head=True)ax.arrow( 0.96*x_max, 0, 0.04*x_max,0,head_width=0.04*y_max,head_length=0.04*x_max,fc='black',length_includes_head=True)# 设置网格线if grid == True:plt.grid(linestyle = "-",alpha = 0.5)if save == True:plt.savefig("./"+str(df.columns.tolist()[0])+"&"+df.columns.tolist()[1]+".jpg")if show == True:plt.show()if __name__ == "__main__":df = pd.read_excel("./data.xlsx",header = 0,sheet_name = "Sheet1")function_fig(df)

绘制结果:

绘制折线图

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib import font_manager
import seaborn as sns# 设置字体
ft = font_manager.FontProperties(fname = "C://Windows/Fonts/simsun.ttc",size = 18)
# 自定义折线图函数
def line_fig(df,grid = True,show = True,save = False,dpi_value = 72,fig_size = (20,8)):# 初始化画布figure = plt.figure(dpi = dpi_value,figsize = fig_size)ax = figure.add_subplot(111)# 做折线图plt.plot(df.iloc[:,0],df.iloc[:,1],color = "blue",linestyle = "-",marker = "o",markersize = 6,markeredgecolor = "crimson",markeredgewidth = 6,linewidth = 2)# 设置坐标轴显示plt.xticks(df.iloc[:,0],fontproperties = ft,size = 22)plt.yticks(fontproperties = ft,size = 22)plt.xlabel(df.columns.tolist()[0],fontproperties = ft,size = 25)plt.ylabel(df.columns.tolist()[1],fontproperties = ft,size = 25)# 设置坐标轴显示范围plt.axis([df.iloc[:,0].min()-0.05*(df.iloc[:,0].max()-df.iloc[:,0].min()),df.iloc[:,0].max()+0.05*(df.iloc[:,0].max()-df.iloc[:,0].min()),df.iloc[:,1].min()-0.1*(df.iloc[:,1].max()-df.iloc[:,1].min()),df.iloc[:,1].max()+0.1*(df.iloc[:,1].max()-df.iloc[:,1].min())])# 去除上、右边框ax = plt.gca()ax.spines["top"].set_color("none")ax.spines["right"].set_color("none")# 设置网格线if grid == True:plt.grid(axis = "y",linestyle = "-",alpha = 0.5)if save == True:plt.savefig("./"+str(df.columns.tolist()[0])+"&"+df.columns.tolist()[1]+".jpg")if show == True:plt.show()
if __name__ == "__main__":df = pd.read_excel("./data.xlsx",header = 0,sheet_name =             "Sheet1")line_fig(df)

绘制结果如下:

by CyrusMay 2020 04 10

幻想着未来
满头白发
公园的长椅上
你也许会说
一声谢谢我
如果这一生
到尽头
换你的这句话
很足够
——————五月天——————

matplotlib.pyplot常用画图方式函数封装(一)——.plot绘制折线图及设置坐标轴箭头完美解决相关推荐

  1. Python:matplotlib pyplot库函数 savefig所支持的格式以及图片插入word保存后模糊的完美解决方法

    Python:matplotlib pyplot库函数 savefig所支持的格式以及图片插入word保存后模糊的完美解决方法 202012月更新 savefig支持的格式 图片插入word,保存后不 ...

  2. r语言plot函数x轴y轴名字_Matplotlib入门-1-plt.plot( )绘制折线图

    在Python学堂1-8中,我们通过一个实例(温湿度变化曲线对比分析图)对Matplotlib模块中的常用折线图进行了初步的认知学习.本章及后续几章内容是对前面内容的总结以及细化.系统性的带领大家共同 ...

  3. python matplotlib绘制折线图

    前言 众所周知,matplotlib 是一款功能强大开源的数据可视化模块,凭借着强大的扩展性构建出更高级别的绘图工具接口如seaborn.ggplot.我们来看看往期学习章节内容概述吧~ 接下来,我们 ...

  4. 「解析」Matplotlib 绘制折线图

    相比于[优雅]matplotlib 常见图.[优雅]matplotlib 3D图 而言,折线图使用的频率会更高一些,在此整理下最近使用 Matplotlib 绘制折线图常用的一些配置,小伙伴们只需要修 ...

  5. python学习之数据分析(二):Matplotlib库:常用画图技巧, 折线图, 散点图,柱状图,直方图, 饼图

    一.Matplotlib之HelloWorld 1. 什么是Matplotlib: 专门用于开发2D图表(包括3D图表) 使用起来及其简单 以渐进.交互式方式实现数据可视化 2. matplotlib ...

  6. Py之matplotlib.pyplot:matplotlib.pyplot的plt.legend函数的简介、使用方法之详细攻略

    Py之matplotlib.pyplot:matplotlib.pyplot的plt.legend函数的简介.使用方法之详细攻略 目录 matplotlib.pyplot的plt.legend函数的简 ...

  7. 【最简单的python画折线图】半封装式代码画折线图,防止写重复代码

    一.为什么要写这个代码 很多时候画散点的折线图时,总是忘记代码细节怎么写,于是就想不如花点时间写几个函数,把画图的功能封装一下,下次画图这部分代码就能与其他代码隔离开来.使用者无需过多关注内部细节,只 ...

  8. 第一章 使用 matplotlib 绘制折线图

    系列文章目录 第一章 使用 matplotlib 绘制折线图 第二章 使用 matplotlib 绘制条形图 第三章 使用 matplotlib 绘制直方图 第四章 使用 matplotlib 绘制散 ...

  9. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

最新文章

  1. VTK:Utilities之CardinalSpline
  2. 【计蒜客习题】消除字符串
  3. DIV+CSS列表式布局(同意图片的应用)
  4. 这个世界本来就是残酷的,所以你不能怪C++向你展示了世界的本质!
  5. Bootstrap 导航
  6. IOS13图标尺寸_苹果iOS 13特性大猜想:新增黑暗模式、多窗口应用、手势导航
  7. wxPython 资料链接
  8. PJ可能会用到的动态规划选讲-学习笔记
  9. 【Love2D】第0章-从零开始学习Love2D
  10. 使用selenium获取网页源码
  11. 什么是高中物理?一篇长长长长文告诉你!
  12. AtCoder - agc005_b(单调栈)
  13. 罗永浩刚直播完,就被罚款拘留?老罗是这么回应的...
  14. Operation CREATE USER failed for 'lin'@'host'
  15. 怎么给其他账号的服务器备案
  16. BugReport 概述
  17. Mysql之MyISAM存储引擎
  18. 如何将图片验证码转换为文字,图片识别。
  19. 交换机虚拟化和堆叠的区别_交换机链路冗余、链路聚合、堆叠、热备、虚拟化...
  20. 服务器无线网卡无法启动不了怎么办,wifi共享精灵启动不了怎么办

热门文章

  1. 动态管理配置文件扩展接口EnvironmentPostProcessor
  2. 也许,DOM 不是答案
  3. oracle命令格式,OraCmD(Oracle命令行工具) V3.1 官方版
  4. php url传递参数_python+Requests接口自动化测试之传递 URL 参数
  5. Oracle大象,大象工程(石头剪刀布PK游戏)
  6. android中暂停服务,Android暂停服务,线程,Asynctask?使用postdelayed的处理程序呢?...
  7. 三刷进博 | 跨界直播,组团参展,施耐德电气有备而来!
  8. 数组中没有给初始值_Array中的reduce()、filter()、map()几张图搞懂
  9. 成功解决ValueError: row index was 65536, not allowed by .xls format
  10. Interview:算法岗位面试—11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知、计算机视觉算法的理解、目标检测相关项目案例