【数据操作与可视化】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,看看会发生什么变化。

相关推荐
MediaTea1 小时前
Python 第三方库:plotnine(类 ggplot 的 Python 数据可视化库)
开发语言·python·信息可视化
贩卖黄昏的熊1 小时前
typescript 快速入门
开发语言·前端·javascript·typescript·ecmascript·es6
路边草随风1 小时前
python 调用 spring ai sse mcp
人工智能·python·spring
剪一朵云爱着2 小时前
PAT 1164 Good in C
c语言·开发语言
LNN20222 小时前
Qt 5.8.0 下实现触摸屏热插拔功能的探索与实践(3)
开发语言·qt
移远通信2 小时前
配网-复杂场景
服务器·开发语言·php
Dr.Kun2 小时前
【鲲码园Python】基于pytorch的鸟品种分类系统(25类)
pytorch·python·分类
一只小bit2 小时前
Qt 快速开始:安装配置并创建简单标签展示
开发语言·前端·c++·qt·cpp
wadesir2 小时前
深入理解Rust静态生命周期(从零开始掌握‘static的奥秘)
开发语言·后端·rust