探索数据可视化:Matplotlib 高级绘图功能(二)

常用视图

折线图

import numpy as np
import matplotlib.pyplot as plt
y = np.random.randint(0,10,size = 15)
y # array([4, 3, 8, 9, 9, 7, 1, 2, 3, 7, 7, 9, 7, 1, 2])

一图多线
# 设置图形大小;宽度为 9 英寸,高度为 6 英寸
plt.figure(figsize=(9,6))

# x默认为y的索引0,1...14
# y为具体的值
plt.plot(y, marker = '*', color = 'r')
# y.cumsum(): 对数组 y 中的元素进行累积求和操作
plt.plot(y.cumsum(), marker = 'o')
# 添加数据点坐标的注释
for i, value in enumerate(y):
    plt.annotate(f'({i}, {value})', (i, value), textcoords="offset points", xytext=(0,10), ha='center')

plt.show()

在这里插入图片描述

多图布局
# 多图布局
fig,axs = plt.subplots(2,1)
# 设置宽高
fig.set_figwidth(9)
fig.set_figheight(6)

axs[0].plot(y,marker = '*',color = 'red')
axs[1].plot(y.cumsum(),marker = 'o')

在这里插入图片描述

柱状图

plt.bar() 绘制柱状图

常用参数:

  • x: 每个柱的 x 坐标。
  • height: 每个柱的高度。
  • width: 每个柱的宽度,默认为 0.8。
  • color: 柱的颜色。
  • edgecolor: 柱的边框颜色。
  • linewidth: 柱的边框宽度。
  • align: 柱的对齐方式,可选值为 ‘center’, ‘edge’。
  • bottom:用于指定每个柱状图的底部位置
labels = ['G1', 'G2', 'G3', 'G4', 'G5','G6'] # 级别

men_means = np.random.randint(20,35,size = 6)
women_means = np.random.randint(20,35,size = 6)
men_std = np.random.randint(1,7,size = 6)
women_std = np.random.randint(1,7,size = 6)

width = 0.35
plt.bar(x=labels, # 横坐标
        height=men_means, # 柱高
        width=width, # 线宽
        yerr=men_std, # 误差条
        label='Men')#标签

# 绘制第二个柱状图,堆叠在第一个柱状图之上
plt.bar(labels, women_means, width, yerr=women_std,
        bottom=men_means, # 条形图,绘制时,落上去
       label='Women')


plt.ylabel('Scores')
plt.title('Scores by group and gender')

# plt.legend() 会根据你在绘图时设置的 label 参数自动生成相应的图例
plt.legend() 

在这里插入图片描述

boy = np.random.randint(20,35,size = 6)
girl = np.random.randint(20,35,size = 6)

labels = ['G1','G2','G3','G4','G5','G5']
plt.figure(figsize=(9,6))
x = np.arange(6)

width = 0.3
plt.bar(x - width/2,boy,width = width)
plt.bar(x + width/2,girl,width = width)

plt.legend(['Boy','Girl'])
plt.xticks(x,labels,fontsize = 20)

# 放置文本 text
for i in range(6):
    s1 = boy[i]
    plt.text(x = i - 0.15,y = s1 + 1,s = s1,ha = 'center')
    s2 = girl[i]
    plt.text(x = i + 0.15,y = s2 + 1,s = s2,ha = 'center')
    
plt.ylim(0,40)

在这里插入图片描述

极坐标图

线性极坐标图
x = np.linspace(0,4* np.pi,200)
y = np.linspace(0,2,200)

# projection='polar' 创建一个极坐标图形子图
ax = plt.subplot(111,projection = 'polar',facecolor = 'lightgreen')
ax.plot(x,y)

# 设置极坐标图中径向坐标(r 轴)的最大值为 3
ax.set_rmax(3)

# 设置r轴标签
ax.set_rticks([0.5,1,1.5,2])
# 显示网格线
ax.grid(True)

在这里插入图片描述

条形极坐标
N = 8 # 分成8份(0 到 360)
x = np.linspace(0, 2 * np.pi, N, endpoint=False)

# 纵坐标
y = np.random.randint(3,15,size = N)

# 宽度,8个柱子沾满圆
width = np.pi / 4

# 颜色,0到1
colors = np.random.rand(8,3) # 随机生成颜色

# 创建极坐标
ax = plt.subplot(111,projection = 'polar') # polar表示极坐标

# 绘制条形图
plt.bar(x, y, width=width,color = colors)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值