matplotlib 支持函数式绘图和面向对象绘图两种绘图方式。
函数式绘图方式与matlab风格一致,先用一条语句画出图像,然后用一系列函数去修饰。而面向对象绘图方式一般自上而下完成,先创建figure,然后再创建子图ax,然后绘制data,最后设计各种辅助元素 (包括 xaxis, yaxis, title, grid,legend, annotate 等 )。
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(18, 8), dpi=100) # 输出图片大小为1800*800
# Mac系统设置中文字体支持
plt.rcParams["font.family"] = 'Arial Unicode MS'
x = [i for i in range(10)]
y1 = [2*i-1 for i in x]
y2 = [i**2+2*i-5 for i in x]
print('x的坐标',x)
print('L1的坐标',y1)
print('L2的坐标',y2)
plt.figure(figsize=(4,3))
plt.plot(x,y2,label='L2')
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--',label='L1')
plt.xlim((-2,10))
plt.ylim((-2,100))
plt.xlabel('x轴',fontsize=20)
plt.ylabel('y轴',fontsize=20)
plt.legend()
plt.show()
"""
x的坐标 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
L1的坐标 [-1, 1, 3, 5, 7, 9, 11, 13, 15, 17]
L2的坐标 [-5, -2, 3, 10, 19, 30, 43, 58, 75, 94]
"""
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(18, 8), dpi=100) # 输出图片大小为1800*800
# Mac系统设置中文字体支持
plt.rcParams["font.family"] = 'Arial Unicode MS'
data = pd.DataFrame(data=[[89,98,83],[80,86,90]],columns=['语文','数学','英语'],index=['小芳','小明'])
x = np.arange(np.shape(data)[0]) # x=[0,1]
y1 = data['语文']
y2 = data['数学']
y3 = data['英语']
width = 0.3
plt.bar(x,y1,width,label='语文') # [0,1]
plt.bar(x+width,y2,width,label='数学') # [0.3,1.3]
plt.bar(x+2*width,y3,width,label='英语') # [0.6,1.6]
plt.ylim((0,130))
# 底部汉字移动到两个柱状条中间(本来汉字是在左边蓝色柱状条下面的中间位置, 然后再向右移动0.3,就到了3个柱子的中间位置)
plt.xticks(x+width,data.index)
plt.legend()
plt.title('学生成绩条形图展示')
plt.show()
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(18, 8), dpi=100) # 输出图片大小为1800*800
# Mac系统设置中文字体支持
plt.rcParams["font.family"] = 'Arial Unicode MS'
plt.xlabel("文本长度")
plt.ylabel("频次")
data = []
np.random.seed(123456)
for x in range(20):
data.append(np.random.randint(1,5))
plt.hist(data, 4, histtype='bar', rwidth=0.8)
plt.ylim([0, 10])
plt.show()
在这里插入代码片
在这里插入代码片
在这里插入代码片
在这里插入代码片