目录

1 前言

2 常用属性和属性变量介绍

3 plot

4 subplots

5 plot封装


1 前言

需要导入的模块和函数:
import matplotlib.pyplot as plt  #画图函数
from matplotlib import style  #图形风格设置

2 常用属性和属性变量介绍

属性:风格,点型maker,点的大小Markersize,线型linestyle,线宽Linewidth,颜色'color',字体大小fontsize,图例label

属性常用的变量:

  • 风格:'bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight', 'ggplot', 'grayscale', 'seaborn-bright', 'seaborn-colorblind', 'seaborn-dark-palette', 'seaborn-dark', 'seaborn-darkgrid', 'seaborn-deep', 'seaborn-muted', 'seaborn-notebook', 'seaborn-paper', 'seaborn-pastel', 'seaborn-poster', 'seaborn-talk', 'seaborn-ticks', 'seaborn-white', 'seaborn-whitegrid', 'seaborn', 'Solarize_Light2', 'tableau-colorblind10', '_classic_test'
  • 点型:圆圈'O',加号'+',星号'*',点'.',叉号'X',方形's',菱形'd'
  • 线型:实线'-',虚线'--',点线':',点划线'-.'
  • 颜色:'r','g','b','c','m','y','k','w','none'-红、绿、蓝、青、洋红、黄、黑、白、默认

3 plot

场景一:已知一个y

import matplotlib.pyplot as plt
from matplotlib import style
#-----只是已知y
x=range(-5,10,1)
y=[i*i for i in x]
plt.figure(1)
style.use('classic')  # 加载'classic'风格
plt.plot(y,marker='o',markersize=6,color="blue", linewidth=2.0, linestyle="solid", label="y")
plt.title('y_test',fontsize=30)#设置图的标题
plt.legend(loc="best")#图例放到图中的最佳位置
plt.xlabel('Points',fontsize=14)  #设置横轴名称以及字体大小
plt.ylabel('Alp',fontsize=14)   #设置纵轴
plt.savefig('a_myplot.jpg', dpi=700) #保存图片,矢量图
plt.show() #显示图像

运行结果:​​​​​​​

x默认从0开始,间隔为1.

场景二:已知一个x一个y

import matplotlib.pyplot as plt
from matplotlib import style
#-----已知一个x一个y
x=range(-5,10,1)
y=[i*i for i in x]
plt.figure(2)
style.use('fast')  # 加载'fast'风格
plt.plot(x,y,marker='o',markersize=6,color="blue", linewidth=2.0, linestyle="solid", label="y_x")
plt.title('y_x_test',fontsize=30)#设置图的标题
plt.legend(loc="best")#图例放到图中的最佳位置
plt.xlabel('Points',fontsize=14)  #设置横轴名称以及字体大小
plt.ylabel('Alp',fontsize=14)   #设置纵轴
plt.savefig('a_myplot.jpg', dpi=700) #保存图片,矢量图
plt.show() #显示图像

运行结果:

场景三:已知一个x多个y 

import matplotlib.pyplot as plt
from matplotlib import style
#-----已知一个x多个y
x=range(-5,10,1)
y1=x
y2=[i*i for i in x]
plt.figure(3)
style.use('ggplot')  # 加载'ggplot'风格
plt.plot(x,y1,marker='o',markersize=6,color="b", linewidth=2.0, linestyle="solid", label="y1_x")
plt.plot(x,y2,marker='o',markersize=6,color="r", linewidth=2.0, linestyle="solid", label="y2_x")
plt.title('ys_x_test',fontsize=30)#设置图的标题
plt.legend(loc="best")#图例放到图中的最佳位置
plt.xlabel('Points',fontsize=14)  #设置横轴名称以及字体大小
plt.ylabel('Alp',fontsize=14)   #设置纵轴
plt.savefig('a_myplot.jpg', dpi=700) #保存图片,矢量图
plt.show() #显示图像

运行结果如下:

 在这里有个疑问,如果有100个y,那需要把那条plt.plot()的代码复制100条吗?不知道有没有更简洁的方法?

4 subplots

subplots实际上是在一幅图里面显示几张子图,弄清楚子图显示的位置即可。

import matplotlib.pyplot as plt
from matplotlib import style
#-----子图显示方法
x=range(-5,10,1)
y1=x
y2=[i*i for i in x]
plt.figure(4)
style.use('grayscale')  # 加载'grayscale'风格
fig,ax=plt.subplots(2,2) #设置子图的数量
ax[0][0].plot(x,y1,marker='o',markersize=6,color="b", linewidth=2.0, linestyle="solid", label="y1_x")
ax[0][0].set_title('y1_x_test',fontsize=15)#设置图的标题
ax[0][0].set_xlabel('Points',fontsize=10)  #设置横轴名称以及字体大小
ax[0][0].set_ylabel('Alp',fontsize=10)   #设置纵轴
ax[0][0].legend(loc="best")#图例放到图中的最佳位置ax[1][0].plot(x,y2,marker='o',markersize=6,color="r", linewidth=2.0, linestyle="solid", label="y2_x")
ax[1][0].set_title('y2_x_test',fontsize=15)#设置图的标题
ax[1][0].set_xlabel('Points',fontsize=10)  #设置横轴名称以及字体大小
ax[1][0].set_ylabel('Alp',fontsize=10)   #设置纵轴
ax[1][0].legend(loc="best")#图例放到图中的最佳位置plt.tight_layout()  # 当有多个子图时,可以使用该语句保证各子图标题不会重叠
plt.savefig('a_myplot.jpg', dpi=700) #保存图片,矢量图
plt.show() 显示图像

运行结果如下:

5 plot封装

在第三章学习的过程中,发现有如下问题:

① 图像中不能显示中文;

② 负号可能不正常显示;

③ 当因变量过多时,plot用起来很麻烦。

笔者总结了一个可以解决上述问题的子函数。子函数代码如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style# 函数的功能,在一张图里显示一个x一个y或者1个x多个y
# count表示第几张图片
# x,y是自变量和因变量,y是按列的二维数组,每一列对应一个因变量
# my_title是图名,格式是字符串
# my_label是图例名,字符串
# my_xlabel,是横坐标名称,字符串
# my_ylabel,是纵坐标,字符串
def plot_x_ys(count, x, y, my_title, my_label, my_xlabel, my_ylabel, my_color,my_makerize,my_linewidth):if len(y.shape) == 1:y = y[:, np.newaxis]  # 如果是向量,列数的求解会报错,需要将向量转换成1列二维数组m = y.shape[0]  # 行数n = y.shape[1]  # 列数plt.figure(count)style.use('seaborn-bright')  ##加载'seaborn-bright'风格plt.rcParams['font.sans-serif'] = ['Songti SC']  # 配置以后可以显示中文plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号for i in range(n):  # 通过循环显示多个yplt.plot(x, y[:, i], marker='o', markersize=my_makerize, color=my_color[i], linewidth=my_linewidth, linestyle="solid",label=my_label[i])plt.title(my_title, fontsize=25)  # 设置图的标题plt.legend(loc="best")  # 图例放到图中的最佳位置plt.xlabel(my_xlabel, fontsize=15)  # 设置横轴名称以及字体大小plt.ylabel(my_ylabel, fontsize=15)  # 设置纵轴plt.show()

注:代码段中,配置显示中文和正常显示负号的代码是必须的,否则会出错。

测试用例如下:

import numpy as np
x=range(-5,10,1)
y1=[i*i for i in x]
y2=[-i*i*i/10 for i in x]
y3=[2*i+1 for i in x]
y=np.array([y1,y2,y3]).T #一个列对应一个因变量
#----显示
my_title="图题" #设置图题名称
my_xlabel="自变量" #设置横轴名称
my_ylabel="因变量" # 设置纵轴名称
my_label=["y1_x","y2_x","y3_x"] #设置图例名称,list
my_color=["black","red","blue"] #设置颜色,list
plot_x_ys(1,x,y,my_title,my_label,my_xlabel,my_ylabel,my_color)

运行结果如下:​​​​​​​

封装以后主函数的代码清爽很多。从运行结果可以看出, 图中可正常显示中文,且坐标轴负号显示正常。

Python作图总结——plot,subplots相关推荐

  1. python 作图:heatmap

    python 作图:heatmap 导入几个库 import numpy as np from numpy import random import pandas as pdimport matplo ...

  2. python画图程序没有图_解决python中使用plot画图,图不显示的问题

    解决python中使用plot画图,图不显示的问题 对以下数据画图结果图不显示,修改过程如下 df3 = {'chinese':109, 'American':88, 'German': 66, 'K ...

  3. python作图颜色_python作图颜色

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 总结今天下午收获颇丰,忘记了吃饭,忘记了打游戏,一直在学习python作图. 学 ...

  4. python使用matplotlib可视化subplots绘制子图、自定义几行几列子图,如果M行N列,那么最终包含M*N个子图、在指定的子图中添加可视化结果

    python使用matplotlib可视化subplots绘制子图.自定义几行几列子图,如果M行N列,那么最终包含M*N个子图.在指定的子图中添加可视化结果 目录

  5. python使用matplotlib可视化subplots子图、为subplots添加主标题(main title)、为subplots的每一个子图添加子图标题(subplots title)

    python使用matplotlib可视化subplots子图.为subplots添加主标题(main title).为subplots的每一个子图添加子图标题(subplots title) 目录

  6. python使用matplotlib可视化subplots子图、subplots绘制子图、子图之间有重叠问题、使用subplots_adjust函数合理设置子图之间的水平和垂直距离

    python使用matplotlib可视化subplots子图.subplots绘制子图.子图之间有重叠问题.使用subplots_adjust函数合理设置子图之间的水平和垂直距离(vertical/ ...

  7. python 2: 解决python中的plot函数的图例legend不能显示中文问题

    python 2: 解决python中的plot函数的图例legend不能显示中文问题 参考文章: (1)python 2: 解决python中的plot函数的图例legend不能显示中文问题 (2) ...

  8. 不用第三方库,也能用 Python 作图,效果还不错

    一提到用 Python 作图,很多人第一个想到的库肯定是 Matplotlib ,功能强大,但是相应地安装所需要的依赖就多.有些开发者在自己的工作流中有简单作图的需求,但是又不希望引入依赖关系复杂的 ...

  9. 【Python】matplotlib.plot画图横坐标混乱及间隔处理

    今天用matplotlib.plot画折线图图时发现横坐标并没有按顺序排列,出现了混乱的情况,导致图很乱,查了好多方法发现是数据类型的原因(最近我出现的好多问题都是因为数据类型不对,下次出问题要记得用 ...

最新文章

  1. phpadmin试用
  2. hdu 1548 A strange lift
  3. OpenCv 009---色彩空间与色彩空间转换
  4. python多线程爬虫实例-Python实现多线程爬虫
  5. NullPointerException: null 报错
  6. Sturt2做表单重复提交
  7. 【华为云实战开发】16.DevOps交付模式下的软件测试
  8. 华为进军美国受挫:竟被美运营商巨头临时放鸽子
  9. Unity配置JAVA环境变量
  10. PdgCntEditor系列教程一:基础知识
  11. html字体字号颜色怎么设置,HTML 字体颜色怎么设置?
  12. crm系统需要的服务器,灵当CRM管理系统运行环境-CRM服务器配置
  13. 翻牌记忆类H5游戏的春天
  14. 【数据压缩】压缩率-图像熵-保真度
  15. LXR( Linux超文本交叉代码检索工具)
  16. vue实现移动端在线预览pdf
  17. 网页无插件视频流媒体播放器EasyPlayerPro-IOS版如何解决有声音无画面的问题?
  18. 超全生活/娱乐UI模板素材网站整理
  19. css自适应图片样式,css怎么让图片自适应?css图片自适应大小的方法介绍
  20. java计算机毕业设计基于springboo+vue的毕业生信息招聘求职平台管理系统

热门文章

  1. EXCEL表格常用函数功能汇总
  2. ENVI标准格式文件转换为.tif文件——基于ENVI库函数
  3. 只需七天|金蝶云苍穹初级开发者训练营来了!
  4. iPhone X如何截图
  5. 解决Attribute url invalid for tag page according to TLD的问题
  6. 担心数据丢失 or 系统备份? Win10系统备份还原轻松学会
  7. 黑色简洁的PHP短网址短链接生成源码
  8. bcb 操作 Excel
  9. vue3+ts+vite,使用高德api实现搜索城市展示在地图上
  10. SQL基础教程|第一章:数据库和SQL