绘制函数图像

一、必用模块
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()
 
 
posted @ 2019-10-29 10:14  数之美  阅读(1118)  评论(0编辑  收藏  举报