matplotlib|matplotlib 数据可视化 - 图表属性

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片

import numpy as np import matplotlib.pyplot as plt

为图表添加文本
  • title() 添加标题
  • xlabel() 为x轴添加标签
  • ylabel() 为y轴添加标签
plt.axis([0,5,0,20]) plt.title('标题') plt.xlabel('横轴') plt.ylabel('纵轴') plt.plot([1,2,3,4],[1,4,9,16],'ro')# 'ro'表示红色的圆点 plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_2_0.png 修改文本属性:字体与颜色
plt.axis([0,5,0,20]) plt.title('标题',fontsize=20)# fontsize指定字体大小,另外 fontname 可指定字体 plt.xlabel('横轴') plt.ylabel('纵轴') plt.plot([1,2,3,4],[1,4,9,16],'ro')# 'ro'表示红色的圆点 plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_4_0.png 在图表的任意位置添加文本
text()函数可在图表的任意位置添加文本,前两个参数指定位置,最后一个参数为文本
plt.axis([0,5,0,20]) plt.title('标题',fontsize=20) plt.xlabel('横轴') plt.ylabel('纵轴')plt.text(1,1.5,'文本一') plt.text(2,4.5,'文本二') plt.text(3,9.5,'文本三') plt.text(4,16.5,'文本四')plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_6_0.png 在文本中显示表达式
matplotlib 整合了 LaTeX 表达式,支持在图表中插入数学表达式。使用上,需要将表达式置于两个$之间
通常,只需要在包含 LaTeX 表达式的字符串前添加 r字符,表明它后面是原始文本,不能对其进行转义操作。
plt.axis([0,5,0,20]) plt.title('标题',fontsize=20) plt.xlabel('横轴') plt.ylabel('纵轴') plt.text(1,1.5,'文本一') plt.text(2,4.5,'文本二') plt.text(3,9.5,'文本三') plt.text(4,16.5,'文本四')plt.text(1.1,12,'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2})plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_8_0.png 添加网格
使用函数grid()
plt.axis([0,5,0,20]) plt.title('标题',fontsize=20) plt.xlabel('横轴') plt.ylabel('纵轴') plt.text(1,1.5,'文本一') plt.text(2,4.5,'文本二') plt.text(3,9.5,'文本三') plt.text(4,16.5,'文本四') plt.text(1.1,12,'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2})plt.grid(True)plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_10_0.png 添加图例
legend()函数可为图表添加图例
plt.axis([0,5,0,20]) plt.title('标题',fontsize=20) plt.xlabel('横轴') plt.ylabel('纵轴') plt.text(1,1.5,'文本一') plt.text(2,4.5,'文本二') plt.text(3,9.5,'文本三') plt.text(4,16.5,'文本四') plt.text(1.1,12,'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2}) plt.grid(True)plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.plot([1,2,3,4],[1+2,4+2,9+2,16+2],'b*') plt.plot([1,2,3,4],[1+5,4+5,9+5,16+5],'y^')plt.legend(['图例一', '图例二', '图例三'], loc=0)# 一定要在plot()之后plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_12_0.png legend()函数中,第一个参数可图例的名称,第二个参数loc可指定位置,它的值分别有:
  • 0 最佳位置
  • 1 右上角
  • 2 左上角
  • 3 右下角
  • 4 左下角
  • 5 右侧
  • 6 左侧垂直居中
  • 7 右侧垂直居中
  • 8 下方水平居中
  • 9 上访水平居中
  • 10 正中间
保存代码
如果想把写了很长的代码保存下来,以方便下次使用,可以使用魔术命令 %save,后面跟上文件名和代码对应的命令提示符号码。
示例:
%save my_code 46

File `my_code.py` exists. Overwrite (y/[N])?y 46 is neither a string nor a macro.

这样,会在当前工作目录下生成一个叫my_code.py的文件,里面的代码就是第46个单元里写的代码。
如果想将保存的代码恢复到编辑器中来,可使用魔术命令%load
示例:
%load my_code.py

# %load my_code.py plt.axis([0,5,0,20]) plt.title('标题',fontsize=20) plt.xlabel('横轴') plt.ylabel('纵轴') plt.text(1,1.5,'文本一') plt.text(2,4.5,'文本二') plt.text(3,9.5,'文本三') plt.text(4,16.5,'文本四') plt.text(1.1,12,'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2}) plt.grid(True)plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.plot([1,2,3,4],[1+2,4+2,9+2,16+2],'b*') plt.plot([1,2,3,4],[1+5,4+5,9+5,16+5],'y^')plt.legend(['图例一', '图例二', '图例三'], loc=0)# 一定要在plot()之后plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_17_0.png 另外,%run可在会话中运行py文件,这省略不作详解。
将会话转换成HTML文件
这个功能不需要写代码控制,直接点击 文件 》 下载 》 HTML 即可
将图表直接保存为图片
使用savefig()函数
plt.axis([0,5,0,20]) plt.title('标题',fontsize=20) plt.xlabel('横轴') plt.ylabel('纵轴') plt.text(1,1.5,'文本一') plt.text(2,4.5,'文本二') plt.text(3,9.5,'文本三') plt.text(4,16.5,'文本四') plt.text(1.1,12,'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2}) plt.grid(True) plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.plot([1,2,3,4],[1+2,4+2,9+2,16+2],'b*') plt.plot([1,2,3,4],[1+5,4+5,9+5,16+5],'y^') plt.legend(['图例一', '图例二', '图例三'], loc=0) plt.show()plt.savefig('my_png.png')# 指定图片名称与格式,将会保存到当前工作目录下

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_21_0.png

谈谈日期值 先来看一个糟糕的日期值显示问题:
import datetime import numpy as np import matplotlib.pyplot as plt start_date = datetime.datetime.now().date() date_list = [start_date - datetime.timedelta(days = i) for i in range(5)] value_list = [i for i in range(5)] plt.plot(date_list,value_list) plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_23_0.png 哦!我想可能是我需要换一副度数更高的眼镜了!
……
matplotlib.datas模块专门用于管理日期类型的数据,这里可以只显示年月,来简化数据,并且还要定义好时间的尺度。
示例:
import datetime import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates# 导入时间管理模块months = mdates.MonthLocator() days = mdates.DayLocator() timeFmt = mdates.DateFormatter('%Y-%m') start_date = datetime.datetime.now().date() date_list = [start_date - datetime.timedelta(days = i*30) for i in range(5)] value_list = [i for i in range(5)] fig, ax = plt.subplots() plt.plot(date_list,value_list) ax.xaxis.set_major_locator(months) ax.xaxis.set_major_formatter(timeFmt) ax.xaxis.set_minor_locator(days) plt.show()

matplotlib|matplotlib 数据可视化 - 图表属性
文章图片
output_25_0.png 【matplotlib|matplotlib 数据可视化 - 图表属性】解析:
  • MonthLocator()指定月份的时间尺度
  • DayLocator()指定日的时间尺度
  • DateFormatter()指定时间格式
  • subplots()创建一个图形和一组副图
  • set_major_locator(months)/set_minor_locator(days)对x轴进行设置日期
  • set_major_formatter(timeFmt)指定日期格式

    推荐阅读