Python利用matplot绘图
主要是介绍一下利用matplot进行绘图的一些基本操作,包括散点图、折线图、饼图、柱状图、箱图的绘制
·
目录
1.matplotlib绘图
①基本用法
绘单个函数图
x = np.linspace(-1, 1, 50)
y = 2 * x + 1
plt.plot(x, y)
plt.show()
画布figure图
将两个函数绘制在一张画布上
x = np.linspace(-1, 1, 50)
y1 = 2 * x + 1
y2 = x**2
# figsize是画布尺寸,facecolor是背景颜色,num为图形编号或者名称
plt.figure(num=3,figsize=(2,3),facecolor='green')
plt.plot(x, y1)
plt.plot(x,y2,color='red',linewidth=3,linestyle='--')
plt.show()
划分子图
# 划分子图 这里是划分成2*2的子图 第三个参数为子图的编号
plt.subplot(221)
plt.title("1") # 子图1的标题
plt.subplot(222)
plt.title("2") # 子图1的标题
plt.subplot(223)
plt.plot(x, y1)
plt.title("3") # 子图1的标题
plt.subplot(224)
plt.title("4") # 子图1的标题
plt.plot(x, y2, color='red', linewidth=3, linestyle='--')
plt.suptitle("5") # 全局标题
plt.show()
直角坐标系
# 设置坐标轴
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('I am X')
plt.ylabel('I am Y')
new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],
[r'$really\ bad$', r'$bad$', r'$normal\ \alpha$', r'$good$', r'$really\ good$'])
# 画直角坐标系
ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
画标签图
# 画标签图
l1, = plt.plot(x, y1, label='up')
l2, = plt.plot(x, y2, color='red', linewidth=1, linestyle='--', label='down')
plt.legend(handles=[l1, l2, ], labels=['aaa', 'bbb'], loc='best') # loc: lower right, upper left, etc.
标记一个点
# 标一个点出来
x0 = 1
y0 = 2 * x0 + 1
plt.scatter(x0, y0, s=50, color='b')
plt.plot([x0, x0], [0, y0], 'k--', linewidth=2.5)
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"))
plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',
fontdict={'size': 16, 'color': 'r'})
②画图
(1)散点图
def scatter():
n = 1024 # data size
# 标准正态分布
X = np.random.normal(0, 1, n) # 每一个点的X值
Y = np.random.normal(0, 1, n) # 每一个点的Y值
T = np.arctan2(Y, X) # for color value
plt.scatter(X, Y, s=75, c=T, alpha=0.5)
plt.xlim(-1.5, 1.5)
plt.xticks(()) # ignore xticks
plt.ylim(-1.5, 1.5)
plt.yticks(()) # ignore yticks
plt.show()
n = 1024 # data size
# 标准正态分布
X1 = np.random.normal(0, 1, n) # 每一个点的X值
Y1 = np.random.normal(0, 1, n) # 每一个点的Y值
plt.scatter(X1, Y1, s=75, c='blue',marker='*',label='正态分布')
# 均匀分布
X2 = np.random.uniform(-4, 4, (1,n)) # 每一个点的X值
Y2 = np.random.uniform(-4, 4, (1,n)) # 每一个点的Y值
plt.scatter(X2, Y2, s=75, c='yellow',marker='o',label='均匀分布')
plt.legend(loc='best')
plt.xlim(-4, 4)
plt.ylim(-4, 4)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
(2)折线图
def zhexian():
n=24
y1=np.random.randint(27,37,n)
y2=np.random.randint(40,60,n)
plt.plot(y1,label='温度')
plt.plot(y2,label='湿度')
plt.xlim(0,23)
plt.ylim(20,70)
plt.xlabel('小时',fontsize=12)
plt.ylabel('测量值',fontsize=12)
plt.title('24小时温度湿度统计',fontsize=16)
plt.legend()
plt.show()
(3)bar柱状图
def bar():
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.barh(x,+Y1)
for x, y in zip(X, Y1):
# ha: horizontal alignment
# va: vertical alignment
plt.text(x, y + 0.05, '%.2f' % y, ha='center', va='bottom')
for x, y in zip(X, Y2):
# ha: horizontal alignment
# va: vertical alignment
plt.text(x, -y - 0.05, '%.2f' % y, ha='center', va='top')
plt.xlim(-0.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())
plt.show()
(4)image热图
def image():
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='upper')
plt.colorbar(shrink=0.92)
plt.xticks(())
plt.yticks(())
plt.show()
(5)饼图
def pie():
data=[2,5,8,13,7]
plt.pie(data,
labels=['apples','banane','gredd','egg','compt'],
autopct='%1.1f%%')
plt.title('pie of data')
plt.show()
(6)箱线图
箱线图一般用来展现数据的分布(如上下四分位值、中位数等),同时也可以用箱线图反映数据的异常情况
def box():
plt.boxplot([height,weight,old,grade],patch_artist=True,vert=True)
plt.show()
更多推荐
已为社区贡献2条内容
所有评论(0)