Pandas8(可视化)——polt()\scatter()\bar()\hist()\pie()\boxplot()、子图、savefig()

可视化(import matplotlib.pyplot as plt)

绘图和可视化

  • 数据探索过程的一部分,找出异常值,必要的数据转换,得出建模的想法
  • pip install matplotlib / conda install matplotlib

一、 polt函数

  1. plot函数及其参数
  • 传入格式化字符串用于规定颜色、标记和线型

    类型可选值示例说明
    颜色'r' (红), 'g'(绿), 'b'(蓝)支持单字母或十六进制值。
    标记'o'(圆形), 's'(方形), '^'(三角形)数据点的显示样式。
    线型'-', '--', ':'实线、虚线、点线等。
  • 该函数的其他参数

    参数说明
    color / c颜色('red', '#FF0000')。
    linestyle / ls线型('-', '--', ':', 'None')。
    linewidth / lw线宽(默认 1.5)。
    marker标记样式('o', '*', 'x')。
    markersize / ms标记大小(默认 6)。
    label图例标签(需配合 plt.legend() 使用)。
    alpha透明度(0-1)。
    markerfacecolor / mfc给标记填充颜色
    markeredgecolor / mec给标记填充边缘色
  1. 基础的折线图
years = [2006 + x for x in range(16)]
weights = np.random.randint(65, 80, 16)
plt.plot(years, weights, c="purple", lw=3, linestyle='--',marker = "s",markerfacecolor = "blue",markeredgecolor="black") 

plt.show()

在这里插入图片描述

二、 scatter函数

  1. 函数的参数
参数含义
s点的大小(标量或数组)
c=None点的颜色(颜色字符串、RGB数组或数值映射)
marker=None点的形状 '.' : 小圆点 'o' : 大圆点 'v' : 倒三角形 '^' : 正三角形 '<' : 左三角形 '>' : 右三角形 's' : 正方形 'p' : 五边形 '*' : 星形 '+' : 加号 'x' : 叉号 'D' : 菱形
alpha=None透明度(0-1)
linewidths=None点边缘线宽
edgecolors=None点边缘颜色
cmap=None颜色映射(当c为数值时使用)
norm=None归一化对象(配合cmap使用)
vmin=None, vmax=None颜色映射范围
  1. 函数的基础使用
X_data = np.random.standard_normal(10000) * 100
Y_data = np.random.standard_normal(10000) * 100
plt.scatter(X_data, Y_data, c="r", marker="*", s=150, alpha=0.1, linewidths=0.5, edgecolors="g" )

在这里插入图片描述

三、 bar函数

  1. 函数的参数
参数含义
x条形图的 x 轴坐标(类别标签的位置)。
yy 轴坐标(类别)。
height条形的高度(y 轴的值)。
width条形的宽度(默认 0.8)。
bottom条形的起始高度(用于堆叠条形图,默认 None)。
align对齐方式:
‘center’(默认,条形居中于 x 坐标)
‘edge’(条形左边缘对齐 x 坐标)。
color条形的颜色(支持字符串、RGB、列表)。
edgecolor条形边框颜色(默认 None)。
linewidth条形边框宽度(默认 0,无边框)。
tick_label自定义 x 轴刻度标签(替代 x 的默认数值标签)。
label图例标签(配合 plt.legend() 使用)。
  1. 函数的基础使用
x = ["C++", "C#", "Python", "Java", "Go"]
y = [20, 50, 140, 1, 45]
plt.bar(x,y)  # 柱状图
plt.bar(x, y, color="r", align="edge", width=0.5, edgecolor="green", lw=2)

在这里插入图片描述

四、 hist 函数

  1. 函数的参数
参数含义
x,# 输入数据(一维数组或列表)
bins=None,区间划分方式,显示多少个方块( int:指定区间数量(如 bins=10); list:自定义区间边界(如 bins=[0, 10, 20, 30]); str:自动计算方式(如 bins=‘auto’))
range=None,# 数据范围
density=False,# 是否归一化为频率
weights=None,# 权重
cumulative=False,# 是否累积统计
bottom=None,# 柱状图底部基线
histtype=‘bar’,# 直方图类型( bar(默认);barstacked(堆叠); step(无填充); stepfilled(有填充))
align=‘mid’,# 柱状图对齐方式(left(左对齐);mid(居中,默认);right(右对齐)
orientation=‘vertical’,# 水平或垂直(vertical(垂直,默认);horizontal(水平))
rwidth=None,# 柱状图相对宽度
log=False,# 是否对数刻度
color=None,# 颜色
label=None,# 图例标签
stacked=False,# 是否堆叠
**kwargs# 其他绘图参数
  1. 函数的基础使用
x = ["C++", "C#", "Python", "Java", "Go"]
y = [20, 50, 140, 1, 45]
plt.hist(ages, bins=20, cumulative=True)
plt.show()

在这里插入图片描述

五、 pie函数

  1. 函数的参数
参数含义
x数据(数组或列表),表示每个扇区的数值大小
labels (可选)每个扇区的标签(列表或数组)
colors (可选)每个扇区的颜色(列表或数组,支持颜色名称或十六进制值)
autopct (可选)显示百分比格式,如 ‘%.1f%%’ 表示保留 1 位小数
startangle (可选)起始角度(默认 0°,即从正东方向开始,逆时针旋转)
explode (可选)突出显示某些扇区(数组,非零值表示偏移距离)
shadow (可选)是否显示阴影(True/False)
pctdistance (可选)百分比标签距离圆心的比例(默认 0.6)
labeldistance (可选)标签距离圆心的比例(默认 1.1)
rotatelabels (可选)False , 旋转标签
normalize (可选)True, 是否自动归一化(总和=1)
radius (可选)饼图的半径(默认 1)
wedgeprops (可选)扇区属性(字典,如 {‘linewidth’: 2, ‘edgecolor’: ‘white’})
textprops (可选)文本属性(字典,如 {‘fontsize’: 12, ‘color’: ‘black’})
center (可选)饼图中心坐标(默认 (0, 0))
frame (可选)是否显示坐标轴框架(True/False,默认 False)
  1. 基础使用
langs = ["Python", "C++", "Java", "C#", "Go"]
votes = [50, 24, 14, 6, 17]

plt.pie(votes, labels=langs, autopct="%.1f%%", explode=[0.2, 0.1, 0, 0, 0], startangle=90) # autopct自动百分比,explode 表示分离,startangle表示角度的调整
plt.show()

在这里插入图片描述
六、 boxplot函数

  1. 函数的参数
参数含义
x,# 输入数据(数组或列表)
notch=None,True# 是否显示中位数凹口
patch_artist=True,# 是否填充箱体颜色
widths=0.5,# 箱体宽度
vert=None,# 是否垂直显示
showfliers=None,# 是否显示异常值
sym=‘o’,# 异常值符号
flierprops=None,# 自定义异常值属性
whis=None,# 须线范围。设为 “range” 时,须线延伸至最小/最大值 whis=“range”
boxprops=None,# 箱体属性,例如boxprops=dict(color=‘red’, linewidth=2)
whiskerprops=None,# 须线属性
medianprops=None,# 中位数线属性
capprops=None,# 顶端横线属性
  1. 函数的基础使用
heights = np.random.normal(172, 8, 300)
plt.boxplot(heights,sym='*') 
plt.show()

在这里插入图片描述

图和子图

  • matplotlib的图像位于Figure(图像)对象中,可以用plt.figure创建一张新图
  • 不能在空Figure(图像)对象上绘图,必须用add_subplot创建一个或多个 Axes 对象(子图),才能在该子图上绘制具体图表

一、使用 figure 结合 add_subplot 创建多个子图

fig = plt.figure()		# 创建一个空白画布
#  2*2,4张子图,编号从1开始
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)

ax1.hist(np.random.standard_normal(100), 
			bins=20, color="black", alpha=0.5)  
# alpha=0.5 设置图像透明度
ax2.scatter(np.arange(30), np.arange(30) + 3*np.random.standard_normal(30))
ax3.plot(np.random.standard_normal(50).cumsum(),
		 color="purple", linestyle="dashed")

在这里插入图片描述

fig = plt.figure()

# 极坐标子图
ax_polar = fig.add_subplot(121, projection='polar')
ax_polar.plot([0, np.pi/2, np.pi], [1, 2, 1])

# 3D子图
ax_3d = fig.add_subplot(122, projection='3d')
ax_3d.scatter([1, 2, 3], [1, 2, 3], [1, 3, 2])

plt.show()

在这里插入图片描述

二、采用plt.subplots函数创建多个子图

fig, axes = plt.subplots(2,2)

# 位置为(0,0)的地方的子图
x = np.linspace(0.1, 20, 100)  # 0.1到20分成100等分
axes[0,0].plot(x, np.sin(x))  # 对第一个子图对象画图
axes[0,0].set_title("sin func")  # 每个子图可以自定义信息

# 第二个子图
axes[0,1].plot(x, np.cos(x))
axes[0,1].set_title("cos func")

# 第三个子图
axes[1,0].plot(x, np.random.random(100))
axes[1,0].set_title("random func")

# 第四个子图
axes[1,1].plot(x, np.log(x))
# axes[1,1].set_title("log func")

# 画sigmoid函数 : f(x) = 1/(1+e**(-x)); 图像命名为sigmoid func
axes[1,1].plot(x,1/(1+np.e**(-x)))
axes[1,1].set_title("sigmoid func")

fig.suptitle("Four plots")  # 整个图的大标题

plt.tight_layout()  # 解决标题的堆叠
plt.show()  

在这里插入图片描述

保存画出的图片(savefig() )

  • plt.savefig(“examples/images”, format=fig_extension文件扩展名, dpi=resolution分辨率)
保存图片的时候的错误做法:
plt.boxplot(data)
plt.show()  # 显示图形(会阻塞代码,关闭窗口后继续执行)
plt.savefig('boxplot.png')  # 可能因图形已关闭而保存空白

# 正确做法:直接保存,或显式关闭
plt.boxplot(data)
plt.savefig("images/testplt.png", format="png", dpi=100)
plt.close()  # 关闭当前图形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值