python的matplot库的常用模板汇总

 折线图:里面的数据不能运行只是介绍用法

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import font_manager
from matplotlib.pyplot import MultipleLocator
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体显示中文
xlist = []
ylist = []
plt.plot(xlist, ylist, color ='red', linestyle = '--')#给个xlist和ylist画函数图x是x轴坐标y是Y轴坐标存取时一一对应
#plt.plot(ylist, color ='blue', linestyle = '--')
plt.axvline(0, color='blue', linestyle='--')#绘制y轴平行线
plt.axvline(0.25, color='blue', linestyle='--',linewidth=2)
plt.axvline(0.43, color='blue', linestyle='--')
plt.axvline(0.69, color='blue', linestyle='--')
plt.axvline(1, color='blue', linestyle='--')
plt.axhline(0, color='red', linestyle='--')#绘制x轴平行线
plt.title("BaTiO3能带曲线图")#设置标题
plt.xlabel("Band energy", fontsize=12)#x轴名称
plt.ylabel("Energy(Ha)")#y轴名称
plt.tick_params(axis='both',labelsize=10)# 设置坐标轴刻度标记的大小
plt.axis([-1,1,-1,1])#这个是设置x轴y轴的左右的极限值也就是横纵坐标大小
plt.show()#显示图像
plt.xticks([1, 1.5,2,2.5, 3,3.5, 4,4.5, 5,5.5, 6],["1:20","1:25","1:30", "1:35","1:40","1:45", "1:50", "1:55", "1:60","1:70","1:75"])#这个是更改x轴的名字每个刻度变成了这个名字

这是公式造图

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 1, 50)#-1是开始点1是结束点50是每个格子的长度
y = x**2
plt.plot(x, y)
plt.show()

 这是3d图

import matplotlib.pyplot as plt
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)
ax.plot_surface(x, y, z, rstride=1,cstride=1, cmap=plt.get_cmap('rainbow'))
plt.show()

这是当时学习笔记 

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
from matplotlib.pyplot import MultipleLocator
mpl.rcParams['font.sans-serif'] = ['SimHei']   # 指定默认字体解决中文转码

x = np.linspace(-1, 1, 50)#-1是开始点1是结束点50是把全长分成50份
y1 = 2*x+1
y2 = x**2
plt.figure()#num是编号figsize()是显示框大小表示新创建一个图像框不信创建的话会图像重叠
plt.plot(x, y1)
plt.figure(num = 3, figsize=(8,5))#num是编号figsize()是显示框大小
plt.plot(x, y2)
plt.plot(x, y1, color='red', linewidth=5.0, linestyle='--')
plt.xlim((-1,2))#x轴的左边和右边的极限值
plt.ylim((-2,3))#y轴的取值
plt.xlabel('x的描述')
plt.ylabel('y的描述')
x_major_locator = MultipleLocator(3)
ax = plt.gca()
# 把x轴的主刻度设置为1的倍数
# 把x轴的刻度间隔设置为1,并存在变量里
x_major_locator = MultipleLocator(0.5)
# 把y轴的刻度间隔设置为1,并存在变量里
y_major_locator = MultipleLocator(0.5)
# ax为两条坐标轴的实例
ax = plt.gca()
# 把x轴的主刻度设置为1的倍数
ax.xaxis.set_major_locator(x_major_locator)
# 把y轴的主刻度设置为1的倍数
ax.yaxis.set_major_locator(y_major_locator)

3d图形笔记 

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 三维,两个特征
fig = plt.figure(figsize=(8, 6)) #设置图标的大小
ax = fig.add_subplot(111, projection='3d') # 111的意思是把画布分为1行1列,画在第一个方格内。其实就是整个画布。

# 创建样本,注意两个特征不能线性相关,否则无法用最小二乘解参数
X1 = np.arange(-4, 4, 0.1)
m = len(X1)
X2 = np.random.rand(m)*5
# print(X2)
# print(X1)

# 堆叠全1数组和X1以及X2形成样本的矩阵,倒置,用以矩阵乘法
X = np.vstack((np.full(m, 1), X1, X2)).T

# y = 15*X1 + 3 * X2 + theta0
# 自定义样本输出
Y = X1 + 3 * X2 + 3*np.random.randn(m)

# 利用标准方程(最小二乘法求解theta)
theta = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(X), X)),
np.transpose(X)), Y)
print(theta)

# 构造网格 meshgrid函数可以通过延伸矩阵构造多维坐标中的网格坐标。
M, N = np.meshgrid(X1, X2)

# zip函数构建一个多元祖[(x1,y1),(x2,y2)...],ravel函数将一个多维数组合并成一维数组
Z = np.array([theta[1] * d + theta[2]*p + theta[0] for d, p in zip(np.ravel(M), np.ravel(N))]).reshape(M.shape)

# 根据网格和函数构建图形 suface是一个完整的面
#ax.plot_surface(M, N, Z)
# scatter是散点图
ax.scatter(X1, X2, Y, c='r')
# 设置坐标轴的名称
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

plt.show()

这是一个3d例子:

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(8, 6)) 
ax = fig.add_subplot(111, projection='3d') 
X1 = np.arange(-4, 4, 0.1);X2 = np.random.rand(len(X1))*10
X = np.vstack((np.full(len(X1), 1), X1, X2)).T
Y = X1 + 3 * X2 + 3*np.random.randn(len(X1))
thetac = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(X), X)),np.transpose(X)), Y)
print(thetac)
M, N = np.meshgrid(X1, X2)
Z = np.array([thetac[1] * d1 + thetac[2]*p + thetac[0] for d1, p in zip(np.ravel(M), np.ravel(N))]).reshape(M.shape)
ax.scatter(X1, X2, Y, c='r')
ax.set_xlabel('X(*1e2nm)')
ax.set_ylabel('Y(*1e2nm)')
ax.set_zlabel('Z(*1e2nm)')
plt.show()

这是直方图:

import numpy as np
import pandas as pd
from pylab import mpl
import matplotlib.pyplot as plt
series = np.array([3, 5, 7, 10, 3])
plt.bar(x=list('ABCDE'), height=series, color='tab:green', width=.5)
plt.show()
plt.barh(y=list('abcde'), width=series, height=.5)
plt.show()

直方图操作实例可以运行:

import numpy as np
import pandas as pd
from pylab import mpl
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
mpl.rcParams['font.sans-serif'] = ['SimHei']  
series = np.array([15.4, 12.3, 9.2, 6.4, 2.2])
series1 = np.array([14.3, 11.4, 7.4, 5.5, 1.1])
series2 = np.array([14.6, 9.6, 6.5, 4.3, 1.6])
labels = [1,2,3,4,5]
x = np.arange(len(labels))
width = 0.1
plt.xlabel("time(day)", fontsize=12)
plt.ylabel("Surplus of sand(cm3)", fontsize=12)
plt.bar(x-width, series, width, label='cone')
plt.bar(x, series1, width, label='Cylinder')
plt.bar(x+width, series2, width, label='Pyramid')
plt.legend()
plt.xticks(x, labels)
plt.title("The change of sand surplus caused by the impact of sea water on sand pile at different time", fontsize=7)
plt.show()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-lyslyslys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值