python的绘图工具Matplotlib(二)

Matplotlib 散点图

使用pyplot中的scatter方法来绘制散点图

scatter()方法参数如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

参数说明:

x,y: 长度相同的numpy数组,分别对应x轴和y轴的坐标

s: 点的大小,默认20,也可以是数组,数组每个元素对应点的大小

c: 点的颜色,默认蓝色’b’,也可以是RGB或RGBA二维数组,或0-100的数字数组(配合cmap参数来使用)

marker: 点的样式,默认小圆圈’o’,其余值参考上一篇plot方法的参数

cmap: Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 ‘face’,可选值有 ‘face’, ‘none’, None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

示例1

import matplotlib.pyplot as plt
import numpy as np

x = np.array(range(10))
y = np.array([1, 4, 9, 16, 7, 11, 23, 30, 28, 15])
# 点的大小
s = np.array([10, 20, 30, 40, 50, 60, 70, 80, 10, 40])
# 点的颜色
c = np.array(['red', 'green', 'yellow', 'gray', 'pink', 'blue', 'black', 'beige', 'orange', 'purple'])

plt.scatter(x, y, s, c=c, marker='o', alpha=0.5)
plt.show()

在这里插入图片描述

示例2

import matplotlib.pyplot as plt
import numpy as np

# 随机数生成器的种子
np.random.seed(19680801)

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
# 点的大小
area = (30 * np.random.rand(N)) ** 2
# 点的颜色
colors = np.random.rand(N) * 100

plt.scatter(x, y, s=area, c=colors, marker='o', cmap='Set1', alpha=0.5)
plt.show()

在这里插入图片描述

Matplotlib 柱形图

使用pyplot中的bar()方法来绘制水平柱形图,barh()方法来绘制垂直方向的柱形图

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明

x:数组,柱形图的 x 轴数据。

height:浮点型数组或数,柱形图的高度,用于垂直柱形图。

width:浮点型数组或数,柱形图的宽度,用于水平柱形图。

bottom:浮点型数组,底座的 y 坐标,默认 0。

align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。

color: 参考散点图中的传参

**kwargs::其他参数。

示例1

import matplotlib.pyplot as plt
import numpy as np

# 设置字体
plt.rcParams['font.family'] = ['Microsoft YaHei']

x = np.array(['1990年', '1991年', '1992年', '1993年', '1994年', '1995年', '1996年', '1997年', '1998年', '1999年', '2000年'])
y = np.array([1.89, 2.21, 2.73, 3.58, 4.89, 6.16, 7.22, 8.02, 8.59, 9.14, 10.13])
# 设置y轴的标题
plt.ylabel("单位(万亿元)")
# 设置x轴下标的倾斜度
plt.xticks(rotation=-45)
# 设置图标的标题
plt.title("90年代中国GDP")
# 绘图
plt.bar(x, y)
plt.show()

在这里插入图片描述

Matplotlib 饼图

用pyplot中的pie()方法绘制饼图

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]

参数说明:

  • x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。
  • explode:数组,表示各个扇形之间的间隔,默认值为0。
  • labels:列表,各个扇形的标签,默认值为 None。
  • colors:数组,表示各个扇形的颜色,默认值为 None。
  • autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。
  • labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。
  • pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。
  • shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。
  • radius::设置饼图的半径,默认为 1。
  • startangle: 用于指定饼图的起始角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。
  • counterclock:布尔值,用于指定是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。
  • wedgeprops: 字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={‘linewidth’:5} 设置 wedge 线宽为5。
  • textprops: 字典类型,用于指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。
  • center: 浮点类型的列表,用于指定饼图的中心位置,默认值:(0,0)。
  • **frame: **布尔类型,用于指定是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。
  • rotatelabels: 布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。
  • data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。
  • 除此之外,pie() 函数还可以返回三个参数:
    • wedges:一个包含扇形对象的列表。
    • texts:一个包含文本标签对象的列表。
    • autotexts:一个包含自动生成的文本标签对象的列表。

示例

import matplotlib.pyplot as plt

# 设置字体
plt.rcParams['font.family'] = ['Microsoft YaHei']

# 数据
x = [29.20, 19.40, 15.10, 14.60, 11.40, 10.30]
# 饼图标签
labels = ['华为', 'VIVO', '苹果', 'OPPO', '小米', '荣耀']
# 突出显示
explode = (0.1, 0, 0, 0, 0, 0)

# 饼图的颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'gray', 'purple']
# 标题
plt.title("中国市场手机品牌占比")

plt.pie(x, labels=labels, explode=explode, shadow=True, startangle=90, colors=colors)

plt.show()

在这里插入图片描述

Matplotlib 直方图

用pyplot中的hist()方法来绘制直方图,直方图跟其他图不一样,有统计的效果。比如入参数据是一个班级某一门课程的成绩集合,它会把这些数据进行一个统计,50-60分的学生数,60-70分的学生成绩数等等

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

参数说明:

  • x:表示要绘制直方图的数据,可以是一个一维数组或列表。
  • bins:可选参数,表示直方图的箱数。默认为10。
  • range:可选参数,表示直方图的值域范围,可以是一个二元组或列表。默认为None,即使用数据中的最小值和最大值。
  • density:可选参数,表示是否将直方图归一化。默认为False,即直方图的高度为每个箱子内的样本数,而不是频率或概率密度。
  • weights:可选参数,表示每个数据点的权重。默认为None。
  • cumulative:可选参数,表示是否绘制累积分布图。默认为False。
  • bottom:可选参数,表示直方图的起始高度。默认为None。
  • histtype:可选参数,表示直方图的类型,可以是’bar’、‘barstacked’、‘step’、‘stepfilled’等。默认为’bar’。
  • align:可选参数,表示直方图箱子的对齐方式,可以是’left’、‘mid’、‘right’。默认为’mid’。
  • orientation:可选参数,表示直方图的方向,可以是’vertical’、‘horizontal’。默认为’vertical’。
  • rwidth:可选参数,表示每个箱子的宽度。默认为None。
  • log:可选参数,表示是否在y轴上使用对数刻度。默认为False。
  • color:可选参数,表示直方图的颜色。
  • label:可选参数,表示直方图的标签。
  • stacked:可选参数,表示是否堆叠不同的直方图。默认为False。
  • **kwargs:可选参数,表示其他绘图参数。

示例

import matplotlib.pyplot as plt
import numpy as np
# 绘制一个09级学生的物理期末考试成绩直方图

# 设置字体
plt.rcParams['font.family'] = ['Microsoft YaHei']

# 成绩数据集
data = np.array(
    [45, 48, 52, 54, 54, 56, 60, 62, 64, 68, 68, 70, 72, 75, 77, 78, 79, 80, 80, 80, 84, 85, 86, 87, 88, 90, 95,
     98, 100])

# 因为学生成绩从40-100分中分布,所以用range指定数据返回,每10分做一个汇总,bins箱数设置成6
plt.hist(data, bins=6, range=(40, 100), color='gray',histtype='stepfilled')

plt.title("09级学生物理期末考试成绩")
plt.xlabel("考试分数")
plt.ylabel("人数")
plt.show()

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值