Python之Matplotlib(三)

Python之Matplotlib(三)

一、各类图形

1、散点图plt.scatter()

  • 首先,先引入matplotlib.pyplot简写作plt,
  • 再引入模块numpy用来产生一些随机数据。
    ⑴数据生成
# 散点图
import matplotlib.pyplot as plt
import numpy as np
n=1024
x=np.random.normal(0,1,n)#每个点的x值
y=np.random.normal(0,1,n)#每个点的y值
t=np.arctan2(y,x)
# print(x,y,t)

⑵画图
数据集生成完毕,现在来用 plt.scatter 画出这个点集,输入X和Y作为location,size=75,颜色为T,color map用默认值,透明度alpha 为 50%。 x轴显示范围定位(-1.5,1.5),并向xtick()函数传入空集()来隐藏x坐标轴,y轴同理:

plt.scatter(x,y,s=75,c=t,alpha=.5)
plt.xlim(-1.5,1.5)#x的范围
plt.xticks(())#忽略x的刻度
plt.ylim(-1.5,1.5)
plt.yticks(())#忽略x的刻度
plt.show()

运行结果
在这里插入图片描述

2、柱状图plt.bar()

柱状图是在数据分析过程中最为常用的图表,折线图和饼图能够表达的信息,柱状图都能够表达。

⑴数据生成

首先生成画图数据,向上向下分别生成2组数据,X为0到9的整数 ,Y是相应的均匀分布的随机数据。

⑵画图

  • 使用的函数是plt.bar,参数为X和Y
  • 修改颜色和数据标签:
    • 用 plt.bar 函数中的facecolor参数设置柱状图主体颜色
    • 用edgecolor参数设置边框颜色
    • 函数 plt.text 可以帮助我们在柱体上方(下方)加上数值:用%.2f保留两位小数
    • 用ha='center’设置横向居中对齐
    • 用va='bottom’设置纵向底部(顶部)对齐
# 柱状图
import matplotlib.pyplot as plt
import numpy as np
n=10
x=np.arange(0,n,1)
# print(x)
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='#FFCCCC',edgecolor='white')#设置自己喜欢的颜色,颜色集见上篇
plt.bar(x,-y2,facecolor='#6699CC',edgecolor='white')
for x0,y in zip(x,y1):
    plt.text(x0,y,'%.2f'%y,ha='center',va='bottom')#ha表示水平对齐方式,va表示垂直对齐方式
for x0,y in zip(x,y2):
    plt.text(x0,-y,'%.2f'%y,ha='center',va='top')
#设置x与y的范围
plt.xlim((-.5,n))
plt.ylim((-1.25,1.25))
plt.show()

运行结果
在这里插入图片描述

3、等高线图

⑴数据生成

数据集即三维点 (x,y) 和对应的高度值,共有256个点。高度值使用一个 height function f(x,y) 生成。 x, y 分别是在区间 [-3,3] 中均匀分布的256个值,并用meshgrid在二维平面中将每一个x和每一个y分别对应起来,编织成栅格

⑵画图

  • 使用函数plt.contourf把颜色加进去,位置参数分别为:X, Y, f(X,Y)
  • 20代表等高线的密集程度
  • 透明度为0.75
  • 将 f(X,Y) 的值对应到color map的RdBu组中寻找对应颜色
  • 接下来进行等高线绘制。使用plt.contour函数划线。位置参数为:X, Y, f(X,Y)。颜色选黑色,线条宽度选0.5。
  • 最后我们要通过 plt.clabel() 在等高线上加入高度数值,即加入Label,其中参数 inline 控制是否将 Label 画在线里面,fontsize 设置字体大小为10。
  • 将坐标轴隐藏
# 自定义f函数:根据x,y的值返回一个高度
import matplotlib.pyplot as plt
import numpy as np
def f(x,y):
    return(1-x/2+x**5+y**3)*np.exp(-x**2 -y**2)
n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
x,y=np.meshgrid(x,y)
#颜色填充,20表示等高线的密集程度,alpha表示透明度,cmap的使用是因为可以将数字与颜色一一对应,可以裂解为matplotlib为大家提供了一个可以直接调用的配色版
plt.contourf(x,y,f(x,y),20,alpha=.5,cmap=plt.cm.RdBu)
# 绘制等高线,colors表示等高线的颜色,linewidth表示显得宽度
c=plt.contour(x,y,f(x,y),20,colors='black',linewidth=.1)
# 添加高度数字,inline表示将高度写在线内,fontsize表示数字的大小
plt.clabel(c,inline=True,fontsize=10)
# 隐藏坐标轴
plt.xticks(())
plt.yticks(())
plt.show()

运行结果
在这里插入图片描述
密集程度为8
在这里插入图片描述

4、随机矩阵画图

⑴数据生成

首先生成一个 3x3 的 2D-array ,也就是三行三列的格子,array 中的每个值经过colormap与一个颜色对应并填充在格子中

import matplotlib.pyplot as plt
import numpy as np
a=np.random.random(9)
a=a.reshape(3,3)

⑵画图

我们选cmap的参数时用的是:cmap=plt.cmap.RdBu,而现在,我们可以直接用单引号传入参数。 origin='lower’代表的就是选择的原点的位置。而 interpolation 表示画图方式,从这里可看到matplotlib官网上对于内插法的不同方法的描述。这里我们使用的是内插法中的 Nearest-neighbor 的方法,其他的方式也都可以随意取选。

# interpolation可以为其他:hanning,hamming,hermite,mitchell
plt.imshow(a,interpolation='nearest',cmap='RdBu',origin='lower')

⑶增加colorbar

colorbar可以为我们显示不同颜色的区块所对应的具体数值。其中shrink参数可以用来调整 colorbar 的长度,这里我们使colorbar的长度变短为原来的9%,这样我们2D图像就创建完毕了

# 增加colorbar
plt.colorbar(shrink=.9)
# 隐藏坐标轴
plt.xticks(())
plt.yticks(())
plt.show()

运行结果
在这里插入图片描述

interpolation='hamming'

在这里插入图片描述
因为是随机产生的数据,因此每次产生数据不同,两图有较大差异,如果使用相同数据则颜色分布是相同的,只是晕染效果不同

自学自用,希望可以和大家积极沟通交流,如有错误还请指正,不喜勿喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柚子味的羊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值