【数据操作与可视化】Matplotlib绘图-生成其他图表类型

【数据操作与可视化】Matplotlib绘图-生成其他图表类型

1、散点图

散点图跟折线图的区别是,折线图会将各个不同的坐标点连接起来绘制图形,这样我们就看不出来原来的坐标点是哪些了。而散点图会直接根据原来的坐标点来进行图形的绘制,可以从图上直接看出坐标点的位置,非常方便我们观测数据的分布和形状。

python 复制代码
x = np.linspace(0, 10, 100)   # 0到10之间的所有数据,分成100个组
y = np.sin(x)
# 绘图设置
plt.figure(figsize=(8, 4), dpi=100)  # 宽度和高度(英寸),dpi,每英寸像素值
plt.title('正余弦信号', color='red', fontsize=20, rotation=0, alpha=1)  # 添加标题,rotation角度旋转,alpha透明度
plt.xlabel('时间', fontsize=15, color='k', rotation=0)   ## 设置x和y轴的名称
plt.ylabel('电压', fontsize=15)
plt.xlim(-1, 11)         # 设置x和y轴的范围
plt.ylim(-1.2, 1.2)
plt.xticks(np.arange(0, 12, 2), fontsize=15, rotation=0)      # 设置x和y周的刻度
plt.yticks([-1, -0.5, 0, 0.5, 1])
# 绘制散点图
plt.scatter(x, y, c='blue', s=10, marker='+', label='sin(x)')  # s参数是size
2、饼图

饼图一般用作观察数据的占比情况。

python 复制代码
# 生成画布
plt.figure(figsize=(8,4))
# 定义饼图相关的数据
values = [63.54, 34.76, 78.46]
labels = ['第一部分', '第二部分', '第三部分']
colors = ['red', 'blue', 'green']
# 绘图
explode = (0.15, 0, 0)   # 将某部分的内容分离出来,指定的值就是分割出来的块和其他两块之间的距离
# labeldistance 设置文本标签离圆心的位置,1.1表示离圆心是1.1倍半径的距离
# autopct 设置文本表示百分比的占比,.1f表示设置百分比的有效位数
plt.pie(values, explode=explode, labels=labels,colors=colors, labeldistance=1.1,
        autopct = '%.1f%%',
        shadow = True,
        startangle = 45, pctdistance = 0.6)
plt.axis('equal')    # 设置圆形显示的纵横比
plt.title('分布占比图', color='r')
plt.legend();
3、柱状图

饼图一般是用于查看分类数据的占比,而柱状图和条形图一般是用于查看分类数据的绝对值。

python 复制代码
# 柱状图
x = np.array([1,2,3,4,5,6])
y = np.array([866, 787, 964, 654, 798, 993])
# [(1, 866), (2, 787)...]
plt.bar(x, y, width=0.5, label='销售业绩')
plt.legend(loc=0);
# 添加标题
plt.title('上半年每月业绩表现')
# 添加数据标签
for a, b in zip(x, y):  # zip函数作用自动把x和y数组中的每一个值一一对应起来形成一个元组
    plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
# 设置自定义x轴刻度值
plt.xticks(x, [str(i+1)+'月' for i in range(6)])
plt.show();

如果想对条形图的数据进行排序后再做图,可以使用dict字典格式来实现:

python 复制代码
dic = {'1月': 2001, '2月': 3409, '3月': 2983, '4月': 2001, '5月': 2763, '6月': 2908}
# 针对dic进行排序
dic = dict(sorted(dic.items(), key = lambda kv:(kv[1], kv[0]), reverse=True))
plt.bar(dic.keys(), dic.values(), width=0.5, label='销售业绩')
4、直方图

直方图是一种观测数据频数的统计图,形式上跟柱状图一样,也是一个一个的长条。但是直方图是用长条形的面积表示频数或者概率,宽度表示组距,高度表示频数/组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。

直方图和柱状图的区别是,柱状图主要用于类别数据,而直方图主要用于连续数据。

python 复制代码
# 生成数据
data= np.random.randn(1000)    # 生成1000个符合正态分布的随机数, 均值为0,方差1
# bins参数表示将所有的数据等分成100份
plt.hist(data, bins=100, density=False, facecolor='b', edgecolor='k', alpha=0.7)  
plt.xlabel('区间')
plt.ylabel('频次')    # 出现的总的次数
plt.title('直方图')
plt.show();

试试将 density=False 修改为 True,看看会发生什么变化。

相关推荐
测试秃头怪11 分钟前
面试大厂就靠这份软件测试八股文了【含答案】
自动化测试·软件测试·python·功能测试·面试·职场和发展·单元测试
测试杂货铺12 分钟前
软件测试面试题大全,你要的都在这。。
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
测试大圣13 分钟前
软件测试基础知识总结(超全的)
软件测试·python·功能测试·测试工具·职场和发展·单元测试·测试用例
sww_102625 分钟前
RAG检索增强 ETL最佳实战
人工智能·python·spring
云栖梦泽1 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋1 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
铅笔侠_小龙虾1 小时前
Flutter Demo
开发语言·javascript·flutter
2501_944525541 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
福大大架构师每日一题1 小时前
ComfyUI v0.11.1正式发布:新增开发者专属节点支持、API节点强化、Python 3.14兼容性更新等全方位优化!
开发语言·python
wangdaoyin20101 小时前
若依vue2前后端分离集成flowable
开发语言·前端·javascript