全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据可视化
71 0
2025-12-04

在数据可视化中,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。

二维码

扫码加我 拉你入群

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

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

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群