Matplotlib python 学习笔记2

课程地址:网易云课堂
https://study.163.com/course/courseMain.htm?courseId=1003240004
或者:
https://morvanzhou.github.io/tutorials/data-manipulation/plt/
莫烦大神的主页:
https://morvanzhou.github.io

以下代码全都在jupyter notebook中通过

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)            #画直线图
# plt.scatter(x,y)     #画点图

ax = plt.gca()                                       #获取到当前坐标轴
ax.spines['right'].set_color('none')           # 将图像的右边框的颜色设置为透明
ax.spines['top'].set_color('none')             #将上边框设置颜色透明
ax.xaxis.set_ticks_position('bottom')       #将图像的下边框设置为x轴
ax.yaxis.set_ticks_position('left')             #将图像的左边框设置为y轴
ax.spines['bottom'].set_position(('data',0)) #将图像的x轴放在y轴的位置1
ax.spines['left'].set_position(('data',0))      #将图像的y轴放在x轴的位置0

x0 = 1
y0 = 2*x0 +1
plt.scatter(x0,y0,s=50,color='r')    # 只画一个点,size=50,颜色为红色
plt.plot([x0,x0],[y0,0],'k--',lw=2.5) # 画出两个点之间的直线,k是black的简写
                                                # --表示线的风格,lw是linewidth的简写

# method 1
#########################
plt.annotate(r'$2x+1=%s$' %y0,xy=(x0,y0),              #  指向(x0,y0)
             xycoords='data',xytext=(+30,-30),             # 从x坐标加30,y坐标减30的地方开始画
            textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))  #最后这个参数都是和箭头的设置有关

# method 2
###########################
plt.text(-4,3,
         '$This. is. the. some. text.\\mu.\\sigma_i.\\alpha_t$',
         # 加点的地方视频里是\,但是这里会报错,视频里是花体,这里也无法显示
         fontdict={'size':16,'color':'r'})    

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.plot(x,y,linewidth=10,alpha =0.3)  
# plt.scatter(x,y,linewidth=0.1,alpha =0.3) 
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')       #将图像的下边框设置为x轴
ax.yaxis.set_ticks_position('left')             #将图像的左边框设置为y轴
ax.spines['bottom'].set_position(('data',0)) #将图像的x轴放在y轴的位置1
ax.spines['left'].set_position(('data',0))      #将图像的y轴放在x轴的位置0

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(10)
#     label.set_bbox(dict(facecolor='grey',edgecolor='red',alpha=0.9))
    label.set_bbox(dict(facecolor='red',edgecolor='None',alpha=0.1))
    #alpha是不透明度,0.9是有90%不透明,10%透明
    #在这里显示跟视频不一样的是,坐标轴上的刻度数字还是被线盖住了

plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np                     #画散点图

n = 1024
X = np.random.normal(0,1,n)   #在0到1之间生成n个随机数
Y = np.random.normal(0,1,n) 
T = np.arctan2(Y,X)               #for color value,用一个函数生成点的颜色的数值

# plt.scatter(X,Y)
# plt.scatter(X,Y,s=75,c=T)               #还是透明点好看
plt.scatter(X,Y,s=75,c=T,alpha=0.5)   #给每个点设置大小,颜色和透明度
#s是size的简写,c是color的简写,给每一个点一个颜色的数值,alpha是不透明度

# plt.scatter(np.arange(5),np.arange(5))
# plt.scatter([0,1,2,3,4],[0,1,2,3,4])    #这句和上句结果是完全一样的

plt.xlim((-1.5,1.5))     #设置x轴显示范围
plt.ylim((-1.5,1.5))     #设置y轴显示范围
# plt.xticks(())          #设置x轴刻度隐藏
# plt.yticks(())          #设置y轴刻度隐藏

plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy  as np     #画柱状图或者叫条形图

n = 12
X = np.arange(n)            # 生成0,1,2,3,4,5,6,7,8,9,10,11这12个数字
Y1 = (1 - X/float(n)*np.random.uniform(0.5,1.0,n))       #在[0.5,1)中随机生成n个数
Y2 = (1 - X/float(n)*np.random.uniform(0.5,1.0,n))

# plt.bar(X,Y1)   

# plt.bar(X,+Y1)
# plt.bar(X,-Y2)

# plt.bar(X,+Y1,facecolor='white',edgecolor='green')  #自己搞得颜色好难看
# plt.bar(X,-Y2,facecolor='red',edgecolor='None')

# plt.figure(figsize=(15,15))
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')   #这样好看多了
plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')

for x,y in zip(X,Y1):  #设置向上的柱状图
    # ha:horizontal alignment 水平对齐方式
    #va: vertical alignment  纵向对齐方式
    plt.text(x +0.05,y +0.05,'%.2f' % y, ha='center', va='bottom')

for x,y in zip(X,Y2):  #设置向下的柱状图
    plt.text(x +0.05,- y -0.05,'-%.2f' % y, ha='center', va='top')

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

plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy  as np     #画等高线图

def f(x,y):
    #  the height function
    return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 256
x = np.linspace(-3,3,n)     # 从-3到3生成256个点
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)    #  生成网格

plt.figure(figsize=(10,10))

# use plt.contourf to filling contours   #填充颜色
# X,Y and value for (X,Y) point
plt.contourf(X,Y,f(X,Y),8,alpha=0.75, cmap= plt.cm.hot)
# plt.contourf(X,Y,f(X,Y),100,alpha=0.75, cmap= plt.cm.hot)
# plt.contourf(X,Y,f(X,Y),8,alpha=0.75, cmap= plt.cm.cool)

#use plt.contour to add contour lines
C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5)
#adding label
plt.clabel(C,inline=True,fontsize=10)
# plt.clabel(C,inline=False,fontsize=10)

plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述

%matplotlib inline
# %matplotlib qt5
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)

'''
for the value of "interpolation",check this:
https://matplotlib.org/examples/images_contours_and_fields/interpolation_methods.html
'''
# plt.imshow(a, interpolation='nearest', cmap='bone', origin='lower')
plt.imshow(a, interpolation='nearest', cmap='bone', origin='upper')
# plt.colorbar()
plt.colorbar(shrink=.8)

plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述

# %matplotlib qt5
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D    # 画3D图

fig = plt.figure(figsize=(15,15))
ax = Axes3D(fig)

# X, Y value
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)    # x-y 平面的网格
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.sin(R)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
# # ax.plot_surface(X, Y, Z, rstride=3, cstride=3, cmap=plt.get_cmap('rainbow'))

ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))  
#zdir='z' , offset=-2  表示把图像压倒在z轴上
# ax.contourf(X, Y, Z, zdir='x', offset=-4, cmap=plt.get_cmap('rainbow'))  
#zdir='x', offset=-4  表示把图像压倒在x轴上

ax.set_zlim(-2,2)      #这个图在视频里可以旋转,看不同的角度

plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yj13811596648/article/details/83042386