matplotlib tips

##matplotlib可以画出:线图,散点图,等高线图,条形图,柱状图,3D图形,图形动画等

import matplotlib.pyplot as plt
import numpy as np

#使用np.linspace定义x:范围是(-1,1),个数是50个
#仿真一维数组(x,y)表示曲线
x = np.linspace(-1,1,50)
y = 2*x + 1

plt.figure()#使用plt.figure定义一个图像窗口
plt.plot(x,y)#使用plt plot画(x,y)曲线
plt.show()#使用plt.show()显示图像

x = np.linspace(-3,3,50)
y1 = 2*x + 1
y2 = x**2

plt.figure()
plt.plot(x,y1)
plt.show()

plt.figure(num = 3, figsize = (8,5),)#使用plt.figure定义一个图像窗口
                                     #编号为3,大小为(8,5)
plt.plot(x,y2)#使用plt.plot画(x,y2)的曲线
plt.plot(x,y1,color = 'red',linewidth = 1.0, linestyle = '--')
#使用plt.plot画(x,y1)曲线,曲线的颜色为红色,曲线的宽度为1.0,曲线的
#类型为虚线
plt.xlim((-1,2))#使用plt.xlim设置x坐标轴范围(-1,2)
plt.ylim((-2,3))#使用plt.ylim设置y坐标轴范围(-2,3)
plt.xlabel('I am x')#设置x坐标轴名称
plt.ylabel('I am y')#设置y坐标轴名称
plt.show()#使用plt.show()显示图像


plt.figure(num = 3, figsize = (8,5),)#使用plt.figure定义一个图像窗口
                                     #编号为3,大小为(8,5)
new_ticks = np.linspace(-1,2,5)#使用np.linspace定义范围以及个数,范围是(-1,2),个数为5
print(new_ticks)#使用print打印出新定义的范围
plt.xticks(new_ticks)#使用plt.xticks设置x轴刻度,范围是(-1,2),个数为5

plt.yticks([-2,-1,0,1,22,3],[r'$really bad$',r'$bad$',r'$normal$',r'$good$',r'$really good$'])
#使用plt.yticks设置y轴刻度以及名称,刻度为[-2,-1.8,-1,1,22,3]
#名称为[‘really bad’,’bad’,’normal’,’good’, ‘really good’]
plt.show()

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y1 = 2*x + 1
y2 = x**2

plt.figure()#定义一个图像窗口
plt.plot(x,y2)
plt.plot(x,y1,color = 'red', linewidth = 1.0, linestyle = '--')
plt.xlim((-1,2))
plt.ylim((-2,3))

new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1,0,1.22,3],['$really bad$','$bad$','$normal$','$good$','$really good$'])

ax = plt.gca() #plt.gca获取当前坐标轴信息
ax.spines['right'].set_color('none')#使用spines设置右侧边框,默认白色
ax.spines['top'].set_color('none')#使用spines设置上侧边框,默认白色
plt.show()

plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color = 'red', linewidth = 1.0, linestyle = '--')
plt.xlim((-1,2))
plt.ylim((-2,3))

new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1,0,1.22,3],['$really bad$','$bad$','$normal$','$good$','$really good$'])

ax = plt.gca() #plt.gca获取当前坐标轴信息
ax.spines['right'].set_color('none')#使用spines设置右侧边框,默认白色
ax.spines['top'].set_color('none')#使用spines设置上侧边框,默认白色
ax.xaxis.set_ticks_position('bottom')
#使用xaxis.set_ticks_position设置x坐标刻度数字或者名称的位置,包括bottom,top,both,defautl,none

ax.spines['bottom'].set_position(('data',0))
#使用spines设置边框,使用set_position设置边框位置:y=0的位置,位置所有的属性包括:outward,axes,data

ax.yaxis.set_ticks_position('left')
#使用yaxis.set_ticks_position设置x坐标刻度数字或者名称的位置,包括left,right,both,default,none

ax.spines['left'].set_position(('data',0))
#使用spines设置边框,使用set_position设置边框位置:x=0的位置,位置所有的属性包括:outward,axes,data

plt.show()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y1 = 2*x + 1
y2 = x**2

plt.figure()
plt.xlim((-1,2))
plt.ylim((-2,3))

new_sticks = np.linspace(-1,2,5)
plt.xticks(new_sticks)
plt.yticks([-2,-1,0,1,2],[r'$really bad$',r'$normal$',r'$good$',r'$really good$'])
l1, = plt.plot(x,y1,label = 'linear line')
l2, = plt.plot(x,y2,color = 'red', linewidth = 1.0, linestyle = '--',label = 'square line')
#l1,l2以逗号结尾,因为plt.plot返回的是一个列表
plt.legend(loc='upper right')#表示图例添加在右上角
plt.show()

plt.figure()
plt.xlim((-1,2))
plt.ylim((-2,3))

new_sticks = np.linspace(-1,2,5)
plt.xticks(new_sticks)
plt.yticks([-2,-1,0,1,2],[r'$really bad$',r'$normal$',r'$good$',r'$really good$'])
l1, = plt.plot(x,y1,label = 'linear line')
l2, = plt.plot(x,y2,color = 'red', linewidth = 1.0, linestyle = '--',label = 'square line')
#l1,l2以逗号结尾,因为plt.plot返回的是一个列表
plt.legend(handles = [l1,l2],labels = ['up','down'],loc = 'best')#设置参数,l1的名称设置为up,l2的名称设置为down,位置为best
plt.show()
#其中loc的参数有很多种,'best'表示自动分配最佳位置,其余的包括
#'best':0, 'upper right':1, 'upper left':2, 'lower left':3, 'lower right':4,
#'right':5,'center left':6,'center right':7,'lower center':8,'upper center':9,
#'center':10

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y = 2*x + 1

plt.figure(num = 1, figsize = (8,5))
plt.plot(x,y)
#挪动坐标轴的位置
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

#标注出点(x0,y0)的位置信息,用plt.plot([x0,y0],[0,y0],'k--',linewidth = 2.5)
#画出一条垂直于x轴的虚线
x0 = 1
y0 = 2*x0 + 1
plt.plot([1,x0],[y0,0],'k--',linewidth = 2.5)
plt.scatter([x0,],[y0,],s = 50, color = 'b')

plt.annotate(r'$2x+1=%s$'%y0,xy =(x0,y0),xycoords = 'data',xytext = (+30,-30),
            textcoords = 'offset points',fontsize = 16,
             arrowprops = dict(arrowstyle = '->',connectionstyle = 'arc3,rad=.2'))

##其中参数xycoords='data' 是说基于数据的值来选位置, xytext=(+30, -30) 和
##textcoords ='offset points' 对于标注位置的描述 和 xy 偏差值, arrowprops是
#对图中箭头类型的一些设置.

plt.text(-3,7,r"$This is text mu sigma_i alpha_t$",fontdict ={'size':16,'color':'r'})
#-3,7是选取text的位置,fontsize设置文本字体
plt.show()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y = 0.1*x

plt.figure()
plt.plot(x,y,linewidth = 10)
plt.ylim(-2,2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor = 'white',edgecolor = 'none',alpha = 0.9))
其中label.set_fontsize重新调节字体大小,bbox设置透明度相关参数
facecolor调节box前景色,edgecolor设置边框,此处设置边框为无,alpha设置透明度
plt.show()

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

n = 1024 #数据量,生成1024个呈标准正态分布(均值为0,方差为1)的数据集
X = np.random.normal(0,1,n)#每个点的X值
Y = np.random.normal(0,1,n)#每个点的Y值
T = np.arctan2(Y,X)#每个点的颜色

plt.scatter(X,Y,s = 75,c = T, alpha = .5)
#输入X和Y作为location,size = 75,颜色为T,color map用默认值,透明度alpha为50%
plt.xlim(-1.5,1.5)
#x轴显示范围设置为(-1.5,1.5)
plt.xticks(())
#用xticks函数隐藏X坐标轴
plt.ylim(-1.5,1.5)
plt.yticks(())

plt.show()
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

n = 12
X = np.arange(n)
Y1 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)

plt.bar(X,+Y1,facecolor = '#9999ff',edgecolor='white')
plt.bar(X,-Y2,facecolor = '#ff9999',edgecolor='white')

plt.xlim(-5,n)
plt.xticks(())
plt.ylim(-1.25,1.25)
plt.yticks(())

for x,y in zip(X,Y1):
    plt.text(x+0.4,y+0.05,'%.2f'%y,ha='center',va='bottom')
for x,y in zip(X,Y2):
    plt.text(x+0.4,-y-0.05,'%.2f'%y,ha='center',va='top')
#用plt加数值说明,用%.2f保留两位小数,横向居中对齐,纵向底部对齐
plt.show()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

def f(x,y):#高度函数生成高度
    return(1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
n = 256#256个点
x = np.linspace(-3,3,n)#x,y分别是在区间[-3,3]中均匀分布的256个值
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)#在二维平面中将每个x和每个y分别对应起来,编织成栅格
plt.contourf(X,Y,f(X,Y),8,alpha=.75,cmap = plt.cm.hot)
#使用plt.contcourf添加颜色,将f(X,Y)的值对应到color map的暖色组中寻找对应颜色
C=plt.contour(X,Y,f(X,Y),8,colors = 'black',linewidth =.5)
#绘制等高线,使用plt.contour函数划线,颜色选择黑色,线条宽度为0.5,8代表等高线的密集程度
plt.clabel(C,inline  = True, fontsize = 10)
#加入label,inline控制是否将label画在线里面,字体大小为10
plt.xticks(())#将坐标轴隐藏
plt.yticks(())
plt.show()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

a = np.array([0.313660827978, 0.365348418405, 0.423733120134,
              0.365348418405, 0.439599930621, 0.525083754405,
              0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3)
plt.imshow(a,interpolation = 'nearest',cmap = 'bone',origin = 'lower')
#origin = 'lower'代表的就是选择的原点位置

plt.colorbar(shrink =.92)#添加一个colorbar,shrink将colorbar的长度变短为原来的92%
plt.xticks(())
plt.yticks(())
plt.show()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#导入Axes3D坐标轴显示模块

fig = plt.figure()#定义图像窗口
ax = Axes3D(fig)#在窗口上添加3D坐标轴

X = np.arange(-4,4,0.25)#设置X的值
Y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(X,Y)#将X和Y编织成栅格
R = np.sqrt(X**2+Y**2)
Z = np.sin(R)#每个(X,Y)点对应的高度

ax.plot_surface(X,Y,Z,rstride = 1,cstride = 5, cmap = plt.get_cmap('rainbow'))
#做一个三维曲面,利用rainbow填充颜色,rstride和cstride表示row和column的跨度

ax.contourf(X,Y,Z,zdir= 'z',offset = -2, cmap = plt.get_cmap('rainbow'))
#如果zdir选择了x,则是对XZ面进行投影
ax.set_zlim(-2, 2)

plt.show()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
plt.figure()#创建一个图像窗口
plt.subplot(2,2,1)#用plt.subplot创建小图,plt.subplot(2,2,1)表示将整个图像窗口
#分为2行2列,当前位置为1
plt.plot([0,1],[0,1])#在第一个位置创建一个小图

plt.subplot(2,2,2)
plt.plot([0,1],[0,2])#在第二个位置创建一个小图

plt.subplot(2,2,3)
plt.plot([0,1],[0,3])#在第三个位置创建一个小图

plt.subplot(2,2,4)
plt.plot([0,1],[0,4])#在第四个位置创建一个小图

plt.show()

plt.figure()
plt.subplot(2,1,1)#将整个图像窗口分为2行1列,当前位置是1
plt.plot([0,1],[0,1])#在第一个位置创建一个小图

plt.subplot(2,3,4)
plt.plot([0,1],[0,2])#在第四个位置创建一个小图


plt.subplot(2,3,5)
plt.plot([0,1],[0,3])#在第五个位置创建一个小图

plt.subplot(2,3,6)#将整个窗口分为2行3列,当前位置是6
plt.plot([0,1],[0,4])

plt.show()
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt

plt.figure()

ax1 = plt.subplot2grid((3,3),(0,0),colspan=3)
#使用plt.subplot2grid创建第一个小图,(3,3)表示将整个图像窗口分为3行3列
#(0,0)表示从第0行第0列开始作图,colspan = 3表示列的跨度为3,rowspan = 1
#表示行的跨度为1,colspan和rowspan如果缺省,默认跨度为1

ax1.plot([1,2],[1,2])#画小图
ax1.set_title('ax1_title')#设置小图的标题

ax2 =plt.subplot2grid((3,3),(1,0),colspan = 2)
#创建第二个小图,(3,3)表示将整个图像窗口分为3行3列,(1,0)表示从第1行
#第0列开始作图,colspan=2表示列的跨度为2
ax3 = plt.subplot2grid((3,3),(1,2),rowspan = 2)
#(1,2)表示从第1行第2列开始做图,rowspan=2表示行的跨度为2
ax4 = plt.subplot2grid((3,3),(2,0))#使用默认的colspan,rowspan
ax5 = plt.subplot2grid((3,3),(2,1))

ax4.scatter([1,2],[2,2]) #使用ax4.scatter创建一个散点图
ax4.set_xlabel('ax4_x')
ax4.set_ylabel('ax4_y')#分别对x轴和y轴进行命名

plt.show()

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure()
gs = gridspec.GridSpec(3,3)
#使用gridspec.GridSpec将整个图像窗口分成3行3列
ax6 = plt.subplot(gs[0,:])
#使用plt.subplot进行作图,gs[0,:]表示这个图占第0行和所有列
ax7 = plt.subplot(gs[1,:2])
#表示占第1行和第2列前的所有列
ax8 = plt.subplot(gs[1:,2])
#表示占第1行以后的所有行和第二列
ax9 = plt.subplot(gs[-1,0])
#表示占倒数第1行和第0列
ax10 = plt.subplot(gs[-1,-2])
#表示占倒数第1行和倒数第2列

plt.show()

import matplotlib.pyplot as plt
f,((ax11,ax12),(ax13,ax14)) = plt.subplots(2,2,sharex = True, sharey = True)
#plt.subplots建立2行2列的图像窗口,sharex = True表示共享x轴坐标,
#share = True表示共享y轴坐标,((ax11,ax12),(ax13,ax14))表示从左到右
#依次存放ax11和ax12,第二行从左到右依次存放ax13和x14
ax11.scatter([1,2],[1,2])
#创建一个散点图
plt.tight_layout()#表示紧凑显示图像
plt.show()
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import matplotlib.pyplot as plt
fig = plt.figure()

x = [1,2,3,4,5,6,7]
y = [1,3,4,2,5,8,6]

left,bottom,width,height = 0.1,0.1,0.8,0.8
#绘制大图,首先确定大图左下角的位置和宽高
#4个值都是占整个figure坐标系的百分比

#将大图坐标系添加到figure中,颜色为red,取名为title
ax1 = fig.add_axes([left,bottom,width,height])
ax1.plot(x,y,'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')

#绘制小图
left,bottom,width,height = 0.2,0.6,0.25,0.25
ax2 = fig.add_axes([left,bottom,width,height])
ax2.plot(x,y,'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')

#绘制小图
plt.axes([0.6,0.2,0.25,0.25])
plt.plot(y[::-1],x,'g')#注意对y进行了逆序处理
plt.xlabel('x')
plt.ylabel('y')
plt.title('title inside 2')

plt.show()
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.1)
y1 = 0.05 * x**2
y2 = -1 * y1

fig,ax1 = plt.subplots()

ax2 = ax1.twinx()#生成镜面效果后的ax2
ax1.plot(x,y1,'g-') #green, solid line
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data',color = 'g')
ax2.plot(x,y2,'b-') #blue, solid line
ax2.set_ylabel('Y2 data',color = 'b')

plt.show()

+++++++++++++++++++++++++++++++++++++++++++++++++++

from matplotlib import pyplot as plt
from matplotlib import animation
import numpy as np
fig,ax = plt.subplots()
x =np.arange(0,2*np.pi,0.01)#0到2pi内的正弦曲线
line, = ax.plot(x,np.sin(x))

def animate(i):#构造自定义动画函数animate,用来更新每一帧上各个x
               #对应的y坐标值,参数表示第i帧
    line.set_ydata(np.sin(x+i/10.0))
    return line

def init():#构造开始函数
    line.set_ydata(np.sin(x))
    return line

ani = animation.FuncAnimation(fig = fig, func = animate,
                              frames = 100,init_func = init,
                              interval = 20, blit = False)
plt.show()


#anim.save('basic_animation.mp4,fps = 30,extra_args=['-vcodec','libx264'])
#首先要安装ffmpeg或者mencoder


在使用matplotlib画二维图像时,可以通过使用xticks()函数来重新命名横坐标。这个函数接受两个参数,第一个参数是一个列表,包含了新的横坐标的名称,第二个参数是一个可选的参数,用于设置横坐标的显示位置。例如,假设我们要将横坐标从默认的0到10改为'A'到'J',可以使用以下代码: import matplotlib.pyplot as plt import numpy as np x = np.arange(0, 10, 0.1) y = np.sin(x) plt.plot(x, y) plt.xticks([0, 2, 4, 6, 8], ['A', 'B', 'C', 'D', 'E']) plt.show() 这样,横坐标就被重新命名为'A'到'E'了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式](https://download.csdn.net/download/weixin_38632916/13711516)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python:(使用matplotlib画图)在一张图上画多条曲线、设置坐标轴名称、设置坐标轴上的刻度、设置坐标轴...](https://blog.csdn.net/DeniuHe/article/details/86652398)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [matplotlib tips](https://blog.csdn.net/u010899135/article/details/78505262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值