提示:菜鸟一枚,此系列文主要是用于我自己的学习记录,如果能对您有帮助,我荣幸至极。


文章目录

  • 《Python数学编程》练习day012: matplotlib(2)
  • 前言
  • 一、图例如何显示?
  • 二、标签和标题的添加?
  • 三、坐标轴范围的调整?
  • 四、绘制好的图的导出以及会遇到的问题、问题解决方式?
  • 总结


《Python数学编程》练习-day011: matplotlib(1)


前言

上接011笔记,之前已经学习使用matplotlib绘制图,但是对于一张图如何进行更为精致的绘制呢,这也是本篇学习笔记记录的内容:

  1. 图例:图例的显示、位置调整;
  2. 标签和标题的添加 ;
  3. 坐标轴的调整;
  4. 绘制好的图的导出以及会遇到的问题、问题解决方式。

提示:以下是本篇文章正文内容,下面案例可供参考

一、图例如何显示?

图例的显示 会用到一个函数——legend()函数。当然方法不知这一种,也可以在 plot 函数里以「键 - 值」的形式增加一个参数,实现添加图例。

这里之介绍使用legend()函数实现图例的添加,实现代码如下:

from pylab import plot, show, legend

# 2000年、2006年、2012年月平均温度
nyc_temp_2000 =[31.3, 37.3, 47.2, 51.0, 63.5, 71.3, 72.3, 72.7, 66.0, 57.0, 45.3, 31.1]
nyc_temp_2006 =[40.9, 35.0, 49.2, 58.0, 67.5, 79.3, 82.3, 62.7, 66.0, 57.0, 48.3, 32.1]
nyc_temp_2012 =[37.3, 38.3, 57.2, 58.0, 66.5, 78.3, 79.3, 82.7, 60.0, 59.0, 55.3, 41.1]

# 利用range()函数生成月份作为x轴
months = range(1, 13)

# 绘制图形
plot(months, nyc_temp_2000, months, nyc_temp_2006, months, nyc_temp_2012)

# 图例,使用legen()函数的第二参数 loc = ''调整图例的位置
legend([2000, 2006, 2012], loc = 'best')

show()

运行结果如下:

python数学程序 python数学编程 中文版_数据分析

代码之中,legend()函数将标识图图形上的每条线的标签列表作为参数,注意输入顺序与plot()函数中的输入的列表顺序要一致。
此外,图例的位置是可以改变的,通过legend()函数中的第二个参数loc = ’ ',进行实现位置的变动:

  1. 默认位置是图形的右上角;
  2. 输入loc = 'best’会自动显示在最佳位置;
  3. 输入loc = ‘lower center’、loc = ‘center left’、loc = ‘upper left’ 分别对应:中下、左中、左上。

二、标签和标题的添加?



标签和标题的添加,主要依靠一下几个函数来实现:

  1. xlable()函数:给x轴添加标签;
  2. ylabel()函数:给y轴添加标签;
  3. title()函数:给图形添加标题

实现代码如下:

from pylab import plot, xlabel, ylabel, title, legend, show

# 2000年、2006年、2012年月平均温度
nyc_temp_2000 =[31.3, 37.3, 47.2, 51.0, 63.5, 71.3, 72.3, 72.7, 66.0, 57.0, 45.3, 31.1]
nyc_temp_2006 =[40.9, 35.0, 49.2, 58.0, 67.5, 79.3, 82.3, 62.7, 66.0, 57.0, 48.3, 32.1]
nyc_temp_2012 =[37.3, 38.3, 57.2, 58.0, 66.5, 78.3, 79.3, 82.7, 60.0, 59.0, 55.3, 41.1]

# 利用range()函数生成月份作为x轴
months = range(1, 13)

# 绘制图形
plot(months, nyc_temp_2000, months, nyc_temp_2006, months, nyc_temp_2012)

#x轴标签
xlabel('Month')

# y轴标签
ylabel('Temprature')

# 标题
title('Average monthly temperature in NYC', loc = 'center')

# 图例,使用legen()函数的第二参数 loc = ''调整图例的位置
legend([2000, 2006, 2012], loc = 'best')

show()

运行结果如下:

python数学程序 python数学编程 中文版_matplotlib_02

title()函数中第二个参数loc = ’ '只支持标题的这三个位置: supported values are ‘left’, ‘center’, ‘right’,否则会进行报错。

三、坐标轴范围的调整?



坐标轴调整,主要依靠一下两种方式来实现:

  1. 使用axis()函数通过xmin=、xmax=、ymin=、ymax= 来调节x、y轴;
  2. 也可以直接使用数组来调整x、y轴范围。例如axis([0, 10, 0, 20]), 这是把x轴的范围设置为(1, 10),把y轴的范围设置为(0, 20)。

实现代码如下:

from pylab import plot, xlabel, ylabel, title, legend, show, axis

# 2000年、2006年、2012年月平均温度
nyc_temp_2000 =[31.3, 37.3, 47.2, 51.0, 63.5, 71.3, 72.3, 72.7, 66.0, 57.0, 45.3, 31.1]
nyc_temp_2006 =[40.9, 35.0, 49.2, 58.0, 67.5, 79.3, 82.3, 62.7, 66.0, 57.0, 48.3, 32.1]
nyc_temp_2012 =[37.3, 38.3, 57.2, 58.0, 66.5, 78.3, 79.3, 82.7, 60.0, 59.0, 55.3, 41.1]

# 利用range()函数生成月份作为x轴
months = range(1, 13)

# 绘制图形
plot(months, nyc_temp_2000, months, nyc_temp_2006, months, nyc_temp_2012)

#x轴标签
xlabel('Month')

# y轴标签
ylabel('Temprature')

# 标题
title('Average monthly temperature in NYC', loc = 'center')

# 图例,使用legen()函数的第二参数 loc = ''调整图例的位置
legend([2000, 2006, 2012], loc = 'best')

# 使用axis()函数调整坐标轴的数值区间
axis([0.0, 13, 0.0, 90.00])

show()

运行结果如下:

python数学程序 python数学编程 中文版_图例_03


调整之前:

python数学程序 python数学编程 中文版_matplotlib_04

四、绘制好的图的导出以及会遇到的问题、问题解决方式?


图形的导出主要使用函数savefig()来实现

实现代码如下:

#解决保存图片不显示的问题
import matplotlib
matplotlib.use('TkAgg')

# 这种方式不能解决jupyter notebook savefig()不显示图片的问题:在头部添加 %matplotlib inline


import matplotlib.pyplot as plt

# 2000年、2006年、2012年月平均温度
nyc_temp_2000 =[31.3, 37.3, 47.2, 51.0, 63.5, 71.3, 72.3, 72.7, 66.0, 57.0, 45.3, 31.1]
nyc_temp_2006 =[40.9, 35.0, 49.2, 58.0, 67.5, 79.3, 82.3, 62.7, 66.0, 57.0, 48.3, 32.1]
nyc_temp_2012 =[37.3, 38.3, 57.2, 58.0, 66.5, 78.3, 79.3, 82.7, 60.0, 59.0, 55.3, 41.1]

# 利用range()函数生成月份作为x轴
months = range(1, 13)

# 绘制图形
plt.plot(months, nyc_temp_2000, months, nyc_temp_2006, months, nyc_temp_2012)

#x轴标签
plt.xlabel('Month')

# y轴标签
plt.ylabel('Temprature')

# 标题
plt.title('Average monthly temperature in NYC', loc = 'center')

# 图例,使用legen()函数的第二参数 loc = ''调整图例的位置
plt.legend([2000, 2006, 2012], loc = 'best')

plt.show()

plt.savefig('C:/Users/zhangfei/Desktop/python_math/nyc_temperature.jpg')

运行结果如下:

python数学程序 python数学编程 中文版_python_05

python数学程序 python数学编程 中文版_python_06

使用savefig()函数对输出绘制扥图形进行保存,有两种方式:

  1. 默认savefig(‘图片名称.格式’):在windows系统通常会被保存在python安装的地方;
  2. 指定路径保存:savefig(‘D:/图片名.格式’)

此外,在导出的时候会出现只有图位而为图形内容的情况,这时候使用:

import matplotlib
matplotlib.use('TkAgg')

进行解决,除此之外还有其他方式,这里不做赘述,代码之中有标注,但是没这个好用,解决问题的成功率没这个靠谱。

总结


基于matplotlib:

  1. 图例:图例的显示、位置调整;
  2. 标签和标题的添加 ;
  3. 坐标轴的调整;
  4. 绘制好的图的导出以及会遇到的问题、问题解决方式;
  5. 除了使用pylab之外,还可以使用matplotlib.pyplot,绘制图形。