这篇和 Numpy 类似,是用来将 matplotlib 在日常实践中作的图片作一个总结,方便以后查询上手。
简介
Matlplotlib 是 Python 的一个可视化模块。该项目是由 John D. Hunter 发起的,但却是受 Matlab 启发构建的,并且有一套完全仿照 Matlab 函数形式的绘图接口。它让你方便地制作线条图、饼图、柱状图以及其它专业图形。使用 Matplotlib ,你可以定制所做图表的任一方面。
散点图
散点图是我们最常见的一种图,它一样用来显示数据点在直角坐标系平面上的分布图例。在我们不清楚数据点之间的关系时,常做该图来直观显示数据的分步情况,以便做进一步分析。
图例如下:
代码解析如下:
1""" 2Simple demo of a scatter plot. 3""" 4# coding=utf-8 5#!/usr/bin/python 6 7import numpy as np 8import matplotlib.pyplot as plt 9 10# matplotlib支持中文 11from pylab import mpl 12mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 13mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是符号的‘-’显示为方块的问题 14 15# 构造数据 16N = 50 17x = np.arange(N) 18y1 = np.random.rand(N)*25 19y2 = np.random.rand(N)*25+25 20 21 22## scatter常用参数 23# s[ize] 点的大小 24# c[olor] 点的颜色 25# marker 点的图案 26# alpha 透明度 27# label 图例说明中的标签 28plt.scatter(x, y1, s=50, c='b', marker='+', alpha=0.5,label=‘ClassA’) 29plt.scatter(x, y2, s=100, c='r', marker='.', alpha=0.5,label=‘ClassB’) 30## X/Y轴的的极限 31xdelt = x.max() - x.min() 32plt.xlim(x.min()-0.1*xdelt,x.max()+0.1*xdelt) 33plt.ylim(0,50) 34## 横纵坐标说明 35plt.xlabel(u'x值说明',fontsize=16) 36plt.ylabel(u'y值说明',fontsize=16,rotation='horizontal') 37## 添加图例 38plt.legend(loc=‘upper left’,frameon=True) 39## 图的标题 40plt.title(u'scatter图',fontsize=20) 41## 保存图片 42plt.savefig('scatter.jpg') 43## 显示图片 44plt.show()
折线图
折线图也是我们常见的一种图,它常用来显示数据的走向趋势。在数据分析中,常用来处理随时间而变化的连续数据。
图例如下:
代码解析如下:
1""" 2Simple demo of a polygonal plot. 3""" 4# coding=utf-8 5#!/usr/bin/python 6 7import numpy as np 8import matplotlib.pyplot as plt 9 10# matplotlib支持中文 11from pylab import mpl 12mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 13mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是符号的‘-’显示为方块的问题 14 15# 构造数据 16N = 50 17x = np.linspace(-2,2,N) 18y1 = x**3 19y2 = np.sin(x) 20 21 22## plot常用参数 23# 'b' 设置颜色和点的图案 24# marker 点的图案 25# label 图例说明中的标签 26# linewidth 线宽 27plt.plot(x, y1, 'b*-', label=‘$x^3$’, linewidth=2) 28plt.plot(x, y2, 'r', label=‘$sin(x)$’, linewidth=2) 29## 设置坐标轴 30ax= plt.gca() # 获取当前坐标系实例 31# 轴线/标尺设置 32ax.spines['right'].set_visible(False) 33ax.spines['top'].set_visible(False) 34ax.xaxis.set_ticks_position('bottom') # X轴标尺在轴线下面 35ax.spines['bottom'].set_position(('data',0)) # 底部轴线在数据区0的位置 36ax.yaxis.set_ticks_position('left') # Y轴标尺在轴线左边 37ax.spines['left'].set_position(('data',0)) # 左边轴线在数据区0的位置 38## X/Y轴的的极限 39xdelt = x.max() - x.min() 40plt.xlim(x.min()-0.1*xdelt,x.max()+0.1*xdelt) 41plt.ylim(0,50) 42## 横纵坐标说明 43plt.xlabel(u'x值说明',fontsize=16) 44plt.ylabel(u'y值说明',fontsize=16,rotation='horizontal') 45## 添加图例 46plt.legend(loc=‘upper left’,frameon=True) 47## 图的标题 48plt.title(u'折线图',fontsize=20) 49## 保存图片 50plt.savefig('polygonal.jpg') 51## 显示图片 52plt.show()
柱状图
柱状图也是我们常见的一种图,它也叫条图,是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值。在数据分析中,常用来比较不同的模型而产生的不同结果。
图例如下:
代码解析如下:
1""" 2Simple demo of a histogram plot. 3""" 4# coding=utf-8 5#!/usr/bin/python 6 7import numpy as np 8import matplotlib.pyplot as plt 9 10# matplotlib支持中文 11from pylab import mpl 12mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 13mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是符号的‘-’显示为方块的问题 14 15# 构造数据 16mu = 100 17sigma = 15 18x = mu + sigma * np.random.randn(10000) 19 20 21num_bins = 5 22## hist常用参数 23# num_bins 条数 24# marker 点的图案 25# label 图例说明中的标签 26# linewidth 线宽 27plt.ot(x, y1, 'b', label=‘$x^3$’, linewidth=2) 28plt.plot(x, y2, 'r', label=‘$sin(x)$’, linewidth=2) 29## 设置坐标轴 30ax= plt.gca() # 获取当前坐标系实例 31# 轴线/标尺设置 32ax.spines['right'].set_visible(False) 33ax.spines['top'].set_visible(False) 34ax.xaxis.set_ticks_position('bottom') # X轴标尺在轴线下面 35ax.spines['bottom'].set_position(('data',0)) # 底部轴线在数据区0的位置 36ax.yaxis.set_ticks_position('left') # Y轴标尺在轴线左边 37ax.spines['left'].set_position(('data',0)) # 左边轴线在数据区0的位置 38## X/Y轴的的极限 39xdelt = x.max() - x.min() 40plt.xlim(x.min()-0.1*xdelt,x.max()+0.1*xdelt) 41plt.ylim(0,50) 42## 横纵坐标说明 43plt.xlabel(u'x值说明',fontsize=16) 44plt.ylabel(u'y值说明',fontsize=16,rotation='horizontal') 45## 添加图例 46plt.legend(loc=‘upper left’,frameon=True) 47## 图的标题 48plt.title(u'折线图',fontsize=20) 49## 保存图片 50plt.savefig('polygonal.jpg') 51## 显示图片 52plt.show()
问题
查询matplotlib的配置文件目录
1import matplotlib 2matplotlib.get_configdir() 3# linux ~/.config/matplotlib/matplotlibrc 4# mac ~/.matplotlib/
更新字体缓存 删除配置文件目录下的 fontlist.cache 文件。