Python绘图表学习笔记

画折线图

参考:https://www.pythonf.cn/read/22457

#绘制折线图
import matplotlib.pyplot as plt
year = [2011,2012,2013,2014]
pop = [1.2,3.4,4.5,6.5]
#折线图绘制函数
plt.plot(year,pop)
plt.show()

在这里插入图片描述

画散点图

#绘制折线图
import matplotlib.pyplot as plt
year = [2011,2012,2013,2014]
pop = [1.2,3.4,4.5,6.5]
#散点图绘制函数
plt.scatter(year,pop)
plt.show();
在这里插入图片描述

python matplotlib RuntimeWarning: Glyph xxxxx missing from current font.字体设置问题

参考:https://blog.csdn.net/weixin_43218670/article/details/105840128
在这里插入图片描述
这是错误提示,只需要补全下面代码就行(缺哪个补哪个)

from matplotlib import font_manager as fm, rcParams
import matplotlib as plt

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置

修饰图

修饰图中的各类信息

title(’图形名称’) (都放在单引号内)
xlabel(’x轴说明’)
ylabel(’y轴说明’)
text(x,y,’图形说明’)
legend(’图例1’,’图例2’,…)

#coding=utf-8
import matplotlib.pyplot as plt

year = [1950,1970,1990,2010]
pop = [2.3,3.4,5.8,6.5]

#折线图,实体填充
plt.fill_between(year,pop,0,color='green')

#轴的标签
plt.xlabel('Year')
plt.ylabel('Population')

#轴的标题
plt.title('World Population')

#轴的y刻度
plt.yticks([0,2,4,6,8,10],['0B','2B','4B','6B','8B','10B'])

图表清空

画上的图表如果没有清空,会让之后的图表继续覆盖原来的图
参考:https://www.zhihu.com/question/26627112
在画图之前用cla(),亲测可以。下面是一个小例子

import matplotlib.pyplot as plt
import numpy as np 

for i in range(1, 5) :
	x = range(0, i)
	y = range(0, i) 
	y = np.array(y) * i
	plt.cla()		#这句的意思是清空
	plt.scatter(x, y, c = 'r', s = 20)
	plt.savefig("./test_%d.png" % i)

python画三维图

参考:https://blog.csdn.net/u014636245/article/details/82799573

fig = plt.figure()  #定义新的三维坐标轴
ax3 = plt.axes(projection='3d')

#定义三维数据
xx = np.arange(-5,5,0.5)
yy = np.arange(-5,5,0.5)
X, Y = np.meshgrid(xx, yy)
Z = np.sin(X)+np.cos(Y)


#作图
ax3.plot_surface(X,Y,Z,cmap='rainbow')
#ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow)   #等高线图,要设置offset,为Z的最小值
plt.show()

在这里插入图片描述
当然也可以用list来实现,以下是我的实现

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

def calc(x,y):
    return x**2+y**2
fig = plt.figure()
ax = Axes3D(fig)
'''
X = np.arange(-4, 4, 0.25)
print(X)    
Y = np.arange(-4, 4, 0.25)
'''
X=[]
Y=[]
for i in range(-4,5):
    X.append(i)
for i in range(-4,5):
    Y.append(i)
X, Y = np.meshgrid(X, Y)
Z = calc(X,Y)
# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()

效果如下:
在这里插入图片描述
其中rstride=1, cstride=1是行和列的相邻之间的步距

猜你喜欢

转载自blog.csdn.net/qq_21237549/article/details/121797834