一、必用模块
import matplotlib.pyplot as plt #pyplot是matplotlib的模块之一,功能纯粹只能绘图
import numpy as np #多数会用到numpy模块计算得到坐标点,比y坐标需要根据x坐标公式计算
有个说法是 import pylab as pl ,相当于将上面的两个import合二为一:
查看pylab源代码可以发现此文件只有80余行,主要内容就是导入一堆包:包含numpy、matplotlib常用库。
避免了多个import语句让操作更简洁,创造了一个类似matlab的编程环境,方便matlab用户切换应用平台。
最大的作用还是方便用户快速计算和绘图,十分适合在IPython交互式环境中使用。即pylab=计算+绘图。
还是建议用什么导入什么,即分开导入,忽略pylab。
二、绘图风格
#查看所有的绘图风格
print plt.style.available
输出:
[\'seaborn-darkgrid\', \'Solarize_Light2\', \'seaborn-notebook\', \'classic\', \'seaborn-ticks\', \'grayscale\', \'bmh\', \'seaborn-talk\', \'dark_background\', \'ggplot\', \'fivethirtyeight\', \'_classic_test\', \'seaborn-colorblind\', \'seaborn-deep\', \'seaborn-whitegrid\', \'seaborn-bright\', \'seaborn-poster\', \'seaborn-muted\', \'seaborn-paper\', \'seaborn-white\', \'fast\', \'seaborn-pastel\', \'seaborn-dark\', \'tableau-colorblind10\', \'seaborn\', \'seaborn-dark-palette\']
#设置默认绘图风格
plt.style.use("classic")
三、显示中文
1.使用指定的字体文件(修改全局字体设置,非特殊需要不建议用,太麻烦)
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
plt.title("标题", fontproperties=font)
2.给每个部分分别指定字体(可以不同部分用不同的字体且不影响全局字体设置,字体必须已安装)
plt.title("标题", fontproperties="SimHei") # (黑体)
3.修改全局字体设置
plt.rcParams[\'font.sans-serif\'] = [\'SimHei\'] # 步骤一(替换sans-serif字体)
plt.rcParams[\'axes.unicode_minus\'] = False # 步骤二(解决坐标轴负数的负号显示问题)
plt.title("标题")
4.和第3种相似(定义格式更丰富)
font = {\'family\' : \'SimHei\',\'weight\' : \'bold\',\'size\' : \'16\'}
plt.rc(\'font\', **font) # 步骤一(设置字体的更多属性)
plt.rc(\'axes\', unicode_minus=False) # 步骤二(解决坐标轴负数的负号显示问题)
plt.title("标题")
5.常用字体的英文简称
宋体 SimSun
黑体 SimHei
华文宋体 STSong
华文仿宋 STFangsong
四、设置图例显示的位置
plt.legend(loc=\'best\')或者plt.legend(loc=0)
0 : \'best\' 表示自适应方式
1:\'upper right\'
2:\'upper left\'
3:\'lower left\'
4:\'lower right\'
5:\'right\'
6:\'center left\'
7:\'center right\'
8:\'lower center\'
9:\'upper center\'
10:\'center\'
五、简单示例
#纯log(x)曲线与含噪点数据比对图像
import numpy as np
import matplotlib.pyplot as plt
x = np.random.uniform(1, 100, 100) #1~100内任意100个浮点数
y = np.log(x) + np.random.normal(0, 0.3, 100)#正态分布,均值为0标准差为0.3
plt.scatter(x, y, s=5,c="b", label="log(x) with noise") #s表示颗粒粗度,c表示颜色
plt.plot(np.arange(1, 100), np.log(np.arange(1, 100)), c="r", label="log(x) true function")
plt.xlabel("x")
plt.ylabel("f(x) = log(x)")
plt.legend(loc=\'best\')#图例位置
plt.title("A Basic Log Function")
plt.show()