是最常用的可视化库,可以绘制2D,3D图等
其他的还有
seaborn:seaborn就是在matplotlib基础上面的封装,方便直接传参数调用
pyecharts:pyecharts是一款将python与echarts结合的强大的数据可视化工具
也不用改什么文档,直接在最顶行加上以下代码即可
import matplotlib; matplotlib.use('TkAgg')
加入以下代码即可解决
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
plt.rcParams['font.sans-serif']=['SimHei'] # 指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
或者是实例化字体对象
import numpy as np
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
from matplotlib import font_manager
# # 中文字体准备
my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc") # 设置字体为微软雅黑
plt.xticks(barrage_type, fontproperties=my_font)
黑体 SimHei 微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei 新宋体 NSimSun
新细明体 PMingLiU 细明体 MingLiU
标楷体 DFKai-SB 仿宋 FangSong
楷体 KaiTi 仿宋_GB2312 FangSong_GB2312
楷体_GB2312 KaiTi_GB2312
fantasy这个好看
提供两种方法,我喜欢第二种
# plt.rcParams['figure.figsize'] = (16.0, 7.0)
plt.figure(figsize=(16, 7)) #都可以
创建绘图对象,简单来说就是你同时弹出几个图片,不单独创建则会默认创建一个
import matplotlib; matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
plt.figure() #创建一个绘图对象, 如果不创建直接调用plot, Matplotlib会直接创建一个绘图对象
plt.plot([2, 2, 3, 4])
plt.figure()
plt.plot([1,2,3],[-1,-2,-3]) # 默认为折线图
plt.ylabel('some numbers')
plt.xlabel('good')
plt.title("hello")
plt.show()
'#9999ff'
color='fuchsia'
plt.xticks(())
plt.yticks(())
plt.xticks(rotation=270)
# 也可以自动旋转
fig=plt.figure()
fig.autofmt_xdate() #自动旋转xlabel
plt.savefig("cm.jpeg",dpi = 600)
##matplotlib画图初步,代码抄自莫凡大神,地址:
##https://morvanzhou.github.io/tutorials/data-manipulation/plt/2-3-axis1/
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-3,3,50)
y1=2*x+1
y2=x**2
plt.figure(num=3,figsize=(5,6))
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('x')
plt.ylabel('y')
plt.xticks(np.linspace(-1,2,5))
plt.yticks([-2,-1.8,0,1.5,3],\
[r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$perfect$'])
ax=plt.gca()##获取坐标轴信息,gca=get current axic
ax.spines['right'].set_color('none')##设置右边框颜色为无
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')##位置有bottom(left),top(right),both,default,none
ax.yaxis.set_ticks_position('left')##定义坐标轴是哪个轴,默认为bottom(left)
ax.spines['bottom'].set_position(('data',0 ))##移动x轴,到y=0
ax.spines['left'].set_position(('data',0))##还有outward(向外移动),axes(比例移动,后接小数)
plt.show()
import os
from PIL import Image
import matplotlib.pyplot as plt
img = Image.open(os.path.join('images', '2007_000648' + '.jpg'))
plt.figure("Image") # 图像窗口名称
plt.imshow(img)
plt.axis('on') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.show()
常用相关参数:
线的宽度:linewidth
线条样式:linestyle = ‘–’
线条颜色:color=‘green’
关键点的标记:marker = ‘<’
plot的第一个参数是x的范围,第二个是y的范围,二者元素个数要一致
import numpy as np
import matplotlib;matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
x=np.linspace(-10,10,100) # 生成等区间的数值,从-10开始到10,等分位100份,改小的话就变得不光滑
y=x**2
plt.plot(x, y, '-*r') # 虚线, 星点, 红色,写-表示实线;--表示虚线;:表示虚点;
plt.show()
# 多线图
x = [0, 1, 2, 4, 5, 6]
y = [1, 2, 3, 2, 4, 1]
z = [1, 2, 3, 4, 5, 6]
plt.plot(x, y, '--*r', x, z, '-.+g')
plt.text(1, 2, "I'm a text") #前两个参数表示文本坐标, 第三个参数为要添加的文本
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.title("hello world")
plt.show()
# 分成两层
x = [0, 1, 2, 4, 5, 6]
y = [1, 2, 3, 2, 4, 1]
z = [1, 2, 3, 4, 5, 6]
plt.figure(1)
plt.subplot(211) # subplot()函数指明numrows行数, numcols列数, fignum图个数. 图的个数不能超过行数和列数之积
plt.plot(x, y, '-+b')
plt.subplot(212)
plt.plot(x, z, '-.*r')
plt.show()
常用相关参数:
颜色:c=‘r’ 红色
点大小:s=20 面积的关系
透明度:alpha=0.5 点多的地方颜色会变深
点形状:marker=‘o’ 圆形吗,可以去官网查看
大小:s
'''
查看相关性:正相关、负相关、不相关
'''
import numpy as np
import matplotlib; matplotlib.use('TkAgg') # 这一行不写的话也挺好看的
import matplotlib.pyplot as plt
N=1000
x = np.random.randn(N)
y = np.random.randn(N)
colors = np.random.randn(N)
area = np.pi*(15*np.random.randn(N))**2 # 0 to 15 的点半径
plt.scatter(x,y,s=area,c=colors,alpha=0.5)
plt.show()
设置前景,背景颜色
plt.bar(x,y,facecolor='#9999ff',edgecolor='white')
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
x = np.arange(10)
y = 2**x + 10
plt.bar(x,y,facecolor='#9999ff',edgecolor='white')
# va='bottom'显示在最大值横线上面,写成top显示在最大值横线下面
for x,y in zip(x,y):
plt.text(x+0.4,y,'%.2f' % y,ha='center',va='bottom')
plt.show()
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# -*- coding: utf-8 -*-
import numpy as np
# import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 直方图
N=5
y=[20,10,30,25,15]
index = np.arange(N)
# 或者写成p2 = plt.barh(x=0, bottom=index, width=y,height=0.5,orientation='horizontal')
x = np.linspace(-5, 5, 100)
y1 = 0.5 * x
y2 = x * x
plt.figure()
plt.xlabel('X axis...')
plt.ylabel('Y axis...') # 设置坐标轴的文字标签
ax = plt.gca() # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none') # 将右边 上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left') # 指定下边的边作为 x 轴 指定左边的边为 y 轴
ax.spines['bottom'].set_position(('data', 0)) # 指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
# 绘制水平条形图写上这个参数orientation='horizontal'
y_1=[20,10,30,25,15]
y_2=[-20,-10,-30,-25,-15]
plt.bar(x=0, bottom=index, width=y_1,height=0.5,orientation='horizontal')
plt.bar(x=0, bottom=index, width=y_2,height=0.5,orientation='horizontal')
plt.show()
柱状图主要展现离散型数据分布
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 直方图
mu=100
sigma=20 # 标准差
x=mu+sigma*np.random.randn(2000)
print(list(x))
plt.hist(x,bins=10,color='red',density=True) # bins表示生成多少列
# density=True会将纵坐标变成频率除以组距
plt.show()
常用相关参数:
autopct=’%.1f%%'表示显示每一块占的值
explode表示对应的区域距离圆中心的距离
shadow表示加上阴影
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
# 饼状图
labels = 'A','B','C','D'
fracs = [15,30,45,10]
explode = [0,0,0.05,0]
plt.pie(x = fracs,labels = labels,autopct='%.1f%%',explode=explode,shadow=True)
plt.show()
不是很常用
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 箱型图
np.random.seed(100)
data = np.random.normal(size=1000, loc=0.0, scale=1.0)
# sym 调整异常值的形状 whis 代表虚线长度,是一个比例值
plt.boxplot(data,sym='o',whis=1.5)
plt.show()
# 多个箱型图
data = np.random.normal(size=(100, 4), loc=0.0, scale=1.0)
labels = ['A','B','C','D']
plt.boxplot(data, labels=labels)
plt.show()
#作业
np.random.seed(100)
data = np.random.normal(size=(100, 5), loc=0.0, scale=1.0)
labels = ['A','B','C','D','E']
plt.boxplot(data, labels=labels,sym='o',whis=1.25)
plt.show()
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
import numpy as np
def f(x, y): #生成高度
return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
x = np.linspace(-3,3,100)
y = np.linspace(-3,3,100)
# 在网格中的数据,生成网格点坐标矩阵,详情见https://blog.csdn.net/lllxxq141592654/article/details/81532855
X,Y = np.meshgrid(x,y)
# cmap表示颜色,8代表几条线
plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)
# 添加文字描述
C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5)
# inline=True是表示在线上添加,fontsize是字体大小
plt.clabel(C,inline=True,fontsize=10)
plt.xticks(())
plt.yticks(())
plt.show()
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
x = np.arange(-4,4,0.25)
y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(x,y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
# rstride=1,cstride=1,一个表示色块的长,一个是宽。cmap是颜色,现在这是彩虹的颜色
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
# 画一个3D图的映射,实际就是等高线图
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')
ax.set_zlim(-2,2)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation
import matplotlib; matplotlib.use('TkAgg')
fig,ax = plt.subplots()
x = np.arange(0,2*np.pi,0.01)
line, = ax.plot(x,np.sin(x))
def animate(i):
line.set_ydata(np.sin(x+i/10))
return line,
def init():
line.set_ydata(np.sin(x))
return line,
# figure表示fig=fig,改变的函数func=animate,初始化函数init_func=init,二十毫秒interval=20
ani = animation.FuncAnimation(fig=fig,func=animate,init_func=init,interval=20)
plt.show()
https://www.pianshen.com/article/6181481903/
https://www.jb51.net/article/172275.htm
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 形状美化
fig, axes = plt.subplots(ncols=2, nrows=2) # 生成一个两行两列的子图
ax1, ax2, ax3, ax4 = axes.ravel()
# 散点图
x = np.random.normal(size=100)
y = np.random.normal(size=100)
prop_cycle = plt.rcParams['axes.prop_cycle']
colors = prop_cycle.by_key()['color'] # 默认的画线颜色循环
ncolors = len(colors)
ax1.plot(x,y,'o')
# 柱状图
x=np.arange(0,10)
y=np.arange(0,10)
shift = np.linspace(0,10,ncolors)
for s in shift:
ax2.plot(x,y+s,"-")
# 坐标随机,颜色循环
x=np.arange(5)
y1,y2,y3=np.random.randint(1,25,size =(3,5))
width =0.25
ax3.bar(x,y1,width)
ax3.bar(x+width,y2,width,color=colors[1])
ax3.bar(x+width*2,y3,width,color=colors[2])
i=0
for i in range(0,ncolors):
xy=np.random.normal(size=2)
ax4.add_patch(plt.Circle(xy,radius =0.3,color= colors[i]))
# plt.Circle画圆,
ax4.axis('equal')
plt.style.use('fivethirtyeight') # ggplot也好看
# 展示的背景格式,有dark_background, bmh, grayscale, ggplot, fivethirtyeight
plt.show()
plt.xlabel("x-axis") # x轴标签
plt.ylabel("y-axis") # y轴标签
plt.title("hello world") # 设置标题
plt.xlim((-1,2))
plt.ylim((-2,3))
new_ticks = np.linspace(-2,2,11)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['level1','level2','level3','level4','level5'])
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,100)
y1 = 2*x + 1
y2 = x**2
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.plot(x,y2,color='blue',linewidth=5.0,linestyle='-')
new_ticks = np.linspace(-2,2,11)
plt.xticks(new_ticks)
plt.yticks([-1,0,1,2,3],
['level1','level2','level3','level4','level5'])
#gca get current axis 获取坐标轴
ax = plt.gca()
#把右边和上边的边框去掉
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
#把x轴的刻度设置为‘bottom’
#把y轴的刻度设置为‘left’
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#设置bottom对应到0点
#设置left对应到0点
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.show()
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,11,1)
y=x*x
plt.plot(x,x*2,label='Normal')
plt.plot(x,x*3,label='Fast')
plt.plot(x,x*4,label='Faster')
# 参数 loc位置{0:'best',1:'右上角',2:左上角,3:'左下角',4:'右下角'} ncol 图例分为几列
plt.legend(loc=0,ncol=2) # 显示图例的位置,不写默认为best
# plt.legend(bbox_to_anchor=(0,1,1,0.1),loc=3,ncol=3,mode="expand")
# 或者写plt.legend(['Normal','Fast','Faster'])
plt.show()
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np
y=np.arange(1,5)
plt.plot(y,y*2)
plt.title('666')
plt.grid(True) # 打开网格选项,默认是不打开的
# color 颜色 linestyle 线型 linewidth 线宽
# plt.grid(True,color='g',linestyle='-',linewidth='2')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
# from matplotlib import font_manager
# # 中文字体准备
# my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/msyh.ttc") # 设置字体为微软雅黑
# plt.xticks(barrage_type,fontproperties=my_font)
# 注释
x = np.arange(-10,11,1)
y = x*x
plt.plot(x,y)
# 'This is the bottom'是注释信息,xy是箭头坐标,xytext是这一行字的距离xt点的对应距离,即偏差
# arrowprops定义注释的格式,headlength表示箭头的长度,headwidth剪头的宽度,width长方形部分的宽度
plt.annotate('This is the bottom',xy=(0,1),xytext=(+10,-10),
arrowprops=dict(facecolor='r',headlength=10,headwidth=20,width=10))
# 弧度是0.2,不加connectionstyle得到直线
plt.annotate('This is the bottom',xy=(0,1),xytext=(+30,-30),
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
plt.show()
#文字,自带Tex引擎,以$符号为开头和结尾,还可以加入数学公式
x = np.arange(-10,11,1)
y = x*x
plt.plot(x,y)
# -2,40,表示文字位置。'function:y=x*x'表示文字内容
# family表示字体,fantasy这个好看,size字号,color颜色,style为斜体,normal为正常,weight为粗体,写成数字也行0-1000
# bbox外面画一个框框,alpha透明度0.2
plt.text(-2,40,
'function:y=x*x',
fontdict={'family'='serif','size'='20','color'='r','style'='italic','weight'='bold'},
bbox=dict(facecolor='r',alpha=0.2))
plt.show()
'''
FigureCanva 画布对象
Figure 子图
Axes 坐标轴
'''
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np
# 子图
x=np.arange(1,100)
plt.subplot(221) #子图的总行数,总列数,子图所在位置,按二维数组顺序排列,写成plt.subplot(2,2,1)也可以
plt.plot(x,x)
plt.subplot(222)
plt.plot(x,-x)
plt.subplot(223)
plt.plot(x,x*x)
plt.subplot(224)
plt.plot(x,np.log(x))
plt.show()
# 画大小不一的图表
plt.figure()
plt.subplot(2,1,1) # 两行一列
plt.plot([0,1],[0,1])
plt.subplot(2,3,4) # 两行三列,但是第一行已经被占了,因此是第四个位置
plt.plot([0,1],[0,1])
plt.subplot(235)
plt.plot([0,1],[0,1])
plt.subplot(236)
plt.plot([0,1],[0,1])
plt.show()
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 多图(同一时间生成多张图)
fig1=plt.figure()
ax1=fig1.add_subplot(111)
ax1.plot([1,2,3],[3,2,1])
fig2=plt.figure()
ax2=fig2.add_subplot(111)
ax2.plot([1,2,3],[1,2,3])
plt.show()
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
#调整颜色
'''
y=np.arange(1,5)
plt.plot(y,'y');
plt.plot(y+1,color=(0.1,0.2,0.3));
plt.plot(y+2,'#FF00FF');
plt.plot(y+3,color='0.5') # 只写数字,显示灰度,数字大小代表颜色有多深
plt.show()
color={
'b':'blue','g':'green','r':'red','c':'cyan','m':'magenta','y':'yellow','k':'black','w':'white'
}
'''
# 点的形状
'''
y=np.arange(1,5)
plt.plot(y,'o');
plt.plot(y+1,'D');
plt.plot(y+2,'^');
plt.plot(y+3,'s');
plt.plot(y+4,'p');
plt.plot(y+5,'x');
plt.show()
'''
# 线型
'''
y=np.arange(1,5)
plt.plot(y,'--') # 虚线
plt.plot(y+1,'-.') # 点画线
plt.plot(y+2,':') # 点线
plt.show()
'''
y=np.arange(1,5)
plt.plot(y,'cx--')
plt.plot(y+1,'kp:')
plt.plot(y+2,'mo-.')
plt.show()
'''
三种方式简介
pyplot:经典高层封装,到目前为止,我们所用的都是
pylonlab:将 Matplotlib、numPy合并的模块,模拟 Matlab的编程环境
面向对象的方式: Matplotlib的精髓,更基础和底层的方式
三种方式优劣
pyplot:简单易用,交互使用时方便,可以根据命令实时作图。但底层定制能力不足。
pylab:完全封装,环境最接近 Matlab。不推荐使用。
面向对象( Object-Oriented)的方式:接近Matplot1ib基础和底层的方式,难度稍大,但定制能力强而且是Matplotlib的精髓。
总结:实战中推荐,根据需求,综合使用 pyplot和OO的方式,显示导入numpy
常用模块导入代码:
import matplotlib pyplot as plt
import numpy as np
'''
#pyplot
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
plt.plot(x,y)
plt.title('pyplot')
plt.show()
#pylab
from pylab import *
x=arange(0,10,1)
y=randn(len(x))
plot(x,y)
title('random numbers')
show()
#Object Oriented
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,10,1)
y=np.random.randn(len(x))
fig=plt.figure() # 生成一个画布figure对象
ax=fig.add_subplot(111) # 在画布上生成坐标轴对象
l,=plt.plot(x,y) # 画图
t=ax.set_title('object oriented') # 写标题
plt.show()
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 添加一个坐标轴,形成双坐标轴
x = np.arange(2,20,1)
y1 = x*x
y2 = np.log(x)
plt.plot(x,y1)
# plt.twinx() # 添加坐标轴,默认是从0到1,添加一个纵轴
# plt.plot(x,y2,'r')
# plt.show()
plt.plot(x,y1)
plt.twiny() # 添加一个横轴
plt.plot(y2,x,'r')
plt.show()
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 区域填充
x = np.linspace(0,5*np.pi,1000)
y1 = np.sin(x)
y2 = np.sin(2*x)
plt.xticks([0,np.pi/2,np.pi,np.pi*3/2,2*np.pi],[r'$0$',r'$\pi/2$',r'$\pi$',r'$\pi*3/2$',r'$\pi*2$'])
# plt.plot(x,y1) # 写上了会显示线的轮廓
# plt.plot(x,y2)
plt.fill(x,y1,'b',alpha=0.3) # 有了透明度好看
plt.fill(x,y2,'r',alpha=0.3)
plt.show()
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import matplotlib.patches as mpaches # 用来画图形
# 形状
fig,ax = plt.subplots() #生成一个图,可以绘制子图的
xy1 = np.array([0.2,0.2]) # 圆心的坐标
xy2 = np.array([0.1,0.4]) # 左下角点的位置
xy3 = np.array([0.5,0.2]) # 圆心
xy4 = np.array([0.5,0.45]) # 圆心
circle = mpaches.Circle(xy1,0.05) # 圆形
rect = mpaches.Rectangle(xy2,0.2,0.1,color='r') # 长 宽。长方形
polygon = mpaches.RegularPolygon(xy3,5,0.1,color='g') # 边数 半径长度。等边五边形
eclipse = mpaches.Ellipse(xy4,0.2,0.1,color='y') #长直径 宽直径。椭圆
ax.add_patch(circle) # 把circle放到图形上去
ax.add_patch(rect)
ax.add_patch(polygon)
ax.add_patch(eclipse)
plt.axis('equal') # 防止画出来的图形变形
plt.grid() # 加上网格
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
from matplotlib.patches import Polygon
# 函数积分图
def func(x):
return -(x-2)*(x-8)+40
x = np.linspace(0, 10)
y = func(x)
fig, ax = plt.subplots()
plt.plot(x, y, 'r', linewidth=2) # 画一个折线图
a=2
b=9
ax.set_xticks([a, b]) # 设置x坐标轴
ax.set_yticks([])
# ax.set_xticklabels([r"$a$", r"$b$"]) # 不写这句话会显示2和9,$a$是显示数学公式类型的字符
ix = np.linspace(a, b)
iy = func(ix)
ixy = zip(ix, iy)
verts = [(a, 0)] + list(ixy) + [(b, 0)]
poly = Polygon(verts, facecolor='0.9', edgecolor='0.5') # 生成多边形
ax.add_patch(poly) # 把多边形添加进去
plt.figtext(0.89, 0.08, r"$x$") # 在图的某个位置写上x和y
plt.figtext(0.1, 0.85, r"$y$")
x_math = (a + b) * 0.5
y_math = 35
ax.text(x_math, y_math, r"$\int_a^b (-(x-2)*(x-8)+40)dx$", fontsize=14, horizontalalignment='center')
# plt.ylim(ymin=30)
plt.show()
import numpy as np
import matplotlib; matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
# 极坐标
r=np.arange(1, 6, 1)
theta =[0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi] # 生成角度
ax=plt.subplot(111, projection ='polar') # projection表示投影为极坐标
ax.plot(theta, r, color ='r', linewidth=3) # linewidth宽度
ax.grid(True)
plt.show()
import matplotlib.pyplot as plt
import matplotlib; matplotlib.use('TkAgg')
import numpy as np
a=eval(input('输入a:'))
b=eval(input('输入b:'))
c=eval(input('输入c:'))
d=eval(input('输入d:'))
x = np.linspace(c*np.pi,2/b*np.pi+c**np.pi,1000)
print(list(x))
y = a*np.sin(x)+d
print(list(y))
plt.plot(x,y)
plt.show()
import numpy as np
import matplotlib;matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
import mpl_toolkits.axisartist as axisartist
#创建画布
fig = plt.figure(figsize=(8, 8))
#使用axisartist.Subplot方法创建一个绘图区对象ax
ax = axisartist.Subplot(fig, 111)
#将绘图区对象添加到画布中
fig.add_axes(ax)
#通过set_visible方法设置绘图区所有坐标轴隐藏
ax.axis[:].set_visible(False)
#ax.new_floating_axis代表添加新的坐标轴
ax.axis["x"] = ax.new_floating_axis(0,0)
#给x坐标轴加上箭头
ax.axis["x"].set_axisline_style("->", size = 1.0)
#添加y坐标轴,且加上箭头
ax.axis["y"] = ax.new_floating_axis(1,0)
ax.axis["y"].set_axisline_style("-|>", size = 1.0)
#设置x、y轴上刻度显示方向
ax.axis["x"].set_axis_direction("top")
ax.axis["y"].set_axis_direction("right")
x = np.linspace(0.2, 5, 100)
y = 1/x
plt.plot(x,y)
plt.plot(-x,-y)
plt.show()