在引入 jupyter notebook 的 jupyterthemes 后,进行多项式绘图,发现显示的图形有问题,解决如下:
#这一句是IPython的魔法函数,可以在IPython编译器里直接使用,作用是内嵌画图,省略掉plt.show()这一步,直接显示图像。
#如果不加这一句的话,我们在画图结束之后需要加上plt.show()才可以显示图像
%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#以下设置语句可以用于解决画图过程中出现的乱码问题!请参考使用(当你还是使用Python2的时候)。
#import sys
#from matplotlib.font_manager import FontProperties
#myfont=FontProperties(fname=r'/Users/Ruan/anaconda/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf/msyh.ttc')
#myfont赋值为特定字体(如本例中的微软雅黑字体)存储在系统中的绝对路径
#在需要显示汉字的地方,指定自定义字体即可,如在x轴标签中要显示汉字:
# plt.xlabel(u'汉字',fontproperties=myfont)
#
#plt.rcParams['axes.unicode_minus']=False #解决负号'-'显示为方块的问题
#将标准输入、输出、错误重定向
#stdout=sys.stdout
#stdin=sys.stdin
#stderr=sys.stderr
#import imp
#imp.reload(sys)
#使用上述设置虽然可以解决中文乱码和编码问题,但还是建议尽量采用英文。
#多项式的写法
a=np.array([2,-3.5,1.6,-2,9])
#polynomial 多项式
p=np.poly1d(a)
#显示几次方,不大好看
print (p)
#均匀分布
x=np.linspace(0,9,10)
x
#带入多项式算出结果
y=p(x)
y
发现黑色的坐标轴在黑色的背景下几乎看不清.
解决方法1:改坐标轴颜色
plt.plot(x,y)
plt.xlabel('X')
#改坐标轴颜色
#获取坐标轴对象
ax = plt.gca()
#设置颜色
ax.tick_params(axis='both',colors = 'white')
#ax.tick_params(axis='both',colors = 'red')
plt.ylabel('Y')
plt.show()
解决方法2:使用jupyterthemes的jtplot将plot风格调整为与主题保持一致
#切换主题后,在jupyter进行plot渲染时,主题配色与默认的matplotlib默认配色相互影响,解决办法是使用jupyterthemes的jtplot将plot风格调整为与主题保持一致
# import jtplot module in notebook
from jupyterthemes import jtplot
# choose which theme to inherit plotting style from
# onedork | grade3 | oceans16 | chesterish | monokai | solarizedl | solarizedd
jtplot.style(theme='onedork')
# set "context" (paper, notebook, talk, poster)
# scale font-size of ticklabels, legend, etc.
# remove spines from x and y axes and make grid dashed
jtplot.style(context='talk', fscale=1.4, spines=False, gridlines='--')
# turn on X- and Y-axis tick marks (default=False)
# turn off the axis grid lines (default=True)
# and set the default figure size
jtplot.style(ticks=True, grid=False, figsize=(6, 4.5))
# reset default matplotlib rcParams
jtplot.reset()
然后绘图,画2条曲线:
p1=p.deriv(m=1) #deriv方法的参数m为1得到其一阶导函数
y1=p1(x)
plt.plot(x,y,x,y1)
plt.show()