【Python数据可视化】Matplotlib学习笔记之pyplot(3)
简介:Matplotlib 是一个Python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
编程环境:Python 3.8
pycharm 2017
需要安装的库:numpy,matplotlib
接上篇【Python数据可视化】Matplotlib学习笔记之pyplot(2) <<<点此阅读
'''13.调整坐标轴范围'''
import numpy as np
import matplotlib.pyplot as plt
'''根据需求调整坐标轴范围'''
x=np.arange(-10,11,1)
plt.plot(x,x**2)
'''1.显示坐标轴范围'''
plt.axis([-5,5,0,50])
'''2.xlim,ylim只调整x,y轴'''
plt.xlim([-7,7])
plt.ylim([0,100])
'''3.只调整一端'''
plt.xlim(xmin=-9)
plt.ylim(ymax=80)
plt.show()
'''14.调整坐标轴刻度'''
import numpy as np
import matplotlib.pyplot as plt
import datetime
import matplotlib as mpl
'''1.面向对象方式---调整坐标轴刻度'''
x=np.arange(1,11,1)
plt.plot(x,x)
'''获取当前图形的坐标轴'''
ax=plt.gca()
'''设置刻度有多少格
只调整x/y轴'''
ax.locator_params('x',nbins=20)
ax.locator_params('y',nbins=10)
'''2.plt实时交互--调整坐标轴刻度'''
plt.locator_params('x',nbins=5)
plt.show()
'''3.面向对象调整日期刻度'''
fig=plt.figure()
start=datetime.datetime(2019,1,1)
stop=datetime.datetime(2020,1,1)
delta=datetime.timedelta(days=1)
'''生成dates数列'''
dates=mpl.dates.drange(start,stop,delta)
'''生成dates长度的随机数列'''
y=np.random.rand(len(dates))
ax=plt.gca()
ax.plot_date(dates,y,linestyle='-',marker='')
'''调整格式--其实已经自动调整好了'''
date_format=mpl.dates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(date_format)
'''调整重叠,自适应调节'''
fig.autofmt_xdate()
plt.show()
'''15.添加另一个坐标轴'''
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,21,1)
y1=x*x
y2=np.log(x)
'''1.pyplot方式'''
'''两个y轴'''
plt.plot(x,y1,'orange')
plt.twinx() #--添加坐标轴
plt.plot(x,y2,'r')
plt.show()
'''两个x轴'''
plt.plot(y1,x,'orange')
plt.twiny() #--添加坐标轴
plt.plot(y2,x,'r')
plt.show()
'''2.面向对象方式'''
fig=plt.figure(dpi=100)
ax1=fig.add_subplot(111)
ax1.plot(x,y1,'b',label='Y1',linewidth=0.5) #设置图例名称
'''设置x/y坐标轴变量名'''
ax1.set_ylabel('Y1')
ax1.set_xlabel('Compare Y1 and Y2')
ax1.legend(loc='upper left')
ax2=ax1.twinx()
ax2.plot(x,y2,'c',label='Y2',linewidth=0.5)
ax2.set_ylabel('Y2')
ax2.legend(loc='upper center')
plt.show()
'''16.添加注释'''
import numpy as np
import matplotlib.pyplot as plt
'''着重强调某一个点'''
x=np.arange(-10,11,1)
y=x**2
plt.plot(x,y)
plt.annotate('this is the bottom',xy=(0,1),xytext=(-2.5,20), #xy:注释的起始点
arrowprops=dict(facecolor='orange',headlength=10, #headlength箭头头部的长度
headwidth=10,width=5)) #headwidth箭头头部的宽度 width箭身的宽度
plt.show()
'''17.添加文字标注'''
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,11,1)
y=x**2
plt.plot(x,y)
'''坐标,文字内容,字体,大小,颜色,样式,粗细,阴影'''
plt.text(-2.5,60,
'function:y=x*x',
family='serif',
size=20,
color='orange',
style='normal',
weight='black',
bbox=dict(facecolor='r',alpha=0.1))
plt.text(-2.5,80,
'function:y=x*x',
family='fantasy',
size=20,
color='green',
style='italic',
weight='light',
bbox=dict(facecolor='b',alpha=0.1)) #normal,italic,oblique
plt.show()
'''18.使用TeX公式写出数学公式'''
import matplotlib.pyplot as plt
'''matplotlib自带mathtext引擎,不需安装TeX系统
$作为开始和结束符'''
fig=plt.figure()
ax=fig.add_subplot(111)
ax.set_xlim([1,7])
ax.set_ylim([1,5])
ax.text(2,4,r"$ \alpha_i \beta_i \pi \lambda \omega $",size=15) #r代表字符串不转义
ax.text(4,4,r"$ \sin(0)=\cos(\frac{\pi}{2}) $",size=15)
ax.text(2,2,r"$ \lim_{x \rightarrow y} \frac{1}{x^3} $",size=15)
ax.text(4,2,r"$ \sqrt[4]{x}=\sqrt{y} $",size=15)
plt.show()
-------------------------未完待续--------------------------