楼主: jxapp_44107
67 0

[作业] 【数据操作与可视化】Matplotlib绘图-生成其他图表类型 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-10-10
最后登录
2018-10-10

楼主
jxapp_44107 发表于 2025-12-4 19:17:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在数据可视化中,Matplotlib 提供了多种图表类型以满足不同场景下的分析需求。以下将介绍几种常见的图形绘制方法,包括散点图、饼图、柱状图以及直方图,并展示其基本用法与参数设置。

1、散点图

散点图与折线图的主要区别在于:折线图会将各个数据点依次连接,从而形成连续的线条,原始点的位置可能被掩盖;而散点图则直接呈现每个坐标点的独立位置,便于观察数据的整体分布趋势和形态特征。

示例代码如下:

x = np.linspace(0, 10, 100)   # 在0到10之间生成100个均匀分布的数据点
y = np.sin(x)

# 图形配置
plt.figure(figsize=(8, 4), dpi=100)
plt.title('正余弦信号', color='red', fontsize=20, rotation=0, alpha=1)
plt.xlabel('时间', fontsize=15, color='k', rotation=0)
plt.ylabel('电压', fontsize=15)
plt.xlim(-1, 11)
plt.ylim(-1.2, 1.2)
plt.xticks(np.arange(0, 12, 2), fontsize=15, rotation=0)
plt.yticks([-1, -0.5, 0, 0.5, 1])

# 绘制散点图
plt.scatter(x, y, c='blue', s=10, marker='+', label='sin(x)')
    

2、饼图

饼图主要用于展示各类别在整体中所占的比例关系,适合用于比例分析。

构建饼图时,需要提供数值列表、标签、颜色等信息,并可通过参数控制显示效果。

# 创建画布
plt.figure(figsize=(8,4))

# 数据定义
values = [63.54, 34.76, 78.46]
labels = ['第一部分', '第二部分', '第三部分']
colors = ['red', 'blue', 'green']

# 设置突出显示的部分(如第一块分离)
explode = (0.15, 0, 0)

# 绘制饼图
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、柱状图

柱状图适用于比较分类数据之间的绝对数值大小,相较于饼图更强调数量差异而非比例关系。

基础柱状图示例:

x = np.array([1,2,3,4,5,6])
y = np.array([866, 787, 964, 654, 798, 993])

plt.bar(x, y, width=0.5, label='销售业绩')
plt.legend(loc=0)

# 添加标题
plt.title('上半年每月业绩表现')

# 在柱子上方标注具体数值
for a, b in 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()
    

若希望对数据进行排序后再绘图,可利用字典结合排序函数实现:

dic = {'1月': 2001, '2月': 3409, '3月': 2983, '4月': 2001, '5月': 2763, '6月': 2908}

# 按照值从大到小排序,若值相同则按键排序
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、直方图

直方图用于展示连续型数据的分布情况,通过将数据划分为若干区间(即“箱”),统计每个区间内出现的频次,进而反映数据的集中趋势与离散程度。它常用于探索变量的分布形态,例如是否服从正态分布等。

该图表类型在数据分析初期具有重要意义,能帮助快速识别异常值、偏态或双峰现象。

直方图是一种用于展示数据频数分布的统计图表,其外观与柱状图相似,均由一系列矩形条组成。不同之处在于,直方图中的每个矩形面积代表频数或概率密度,其中矩形的宽度表示组距,高度表示频数除以组距。因此,长条的宽度和高度都具有统计意义。当所有组距相等时,通常直接用长条的高度来反映频数大小。

与柱状图相比,两者的应用场景存在明显差异:柱状图适用于展示分类数据之间的比较,而直方图则主要用于呈现连续型数据的分布情况。

下面是一段生成数据并绘制直方图的代码示例:

# 生成数据
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 修改为 density=True,观察图形显示结果的变化。此时纵轴将不再表示原始频次,而是表示概率密度值,使得整个直方图下方面的面积总和为1。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Matplotlib matplot plot Mat TLI

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-5 21:29