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

相关推荐
2301_7644413316 小时前
python实现罗斯勒吸引子(Rössler Attractor)
开发语言·数据结构·python·算法·信息可视化
探序基因16 小时前
R语言-使用pheatmap函数画热图
开发语言·r语言
-凌凌漆-16 小时前
【JS】var与let的区别
开发语言·前端·javascript
ExiFengs16 小时前
Java使用策略模式实现多实体通用操作的优雅设计
java·开发语言·设计模式·策略模式
茶本无香16 小时前
设计模式之三—工厂模式:灵活对象创建的艺术
java·开发语言·设计模式·工厂模式
超级无敌大学霸16 小时前
c语言整型提升
c语言·开发语言
困惑阿三16 小时前
利用 Flexbox 实现无需媒体查询(Media Queries)的自动响应式网格。
开发语言·前端·javascript
曲幽16 小时前
FastAPI数据库实战:从SQLAlchemy原理到高效连接管理,告别性能瓶颈
python·sqlite·flask·fastapi·web·sqlalchemy·db
m0_7482500316 小时前
C++ 预处理器
开发语言·c++
dagouaofei16 小时前
2026 年工作计划 PPT 制作,AI 自动生成是否真的省时
python·powerpoint