目录
一、柱状图
(一)特点
直观清晰:通过不同长度的柱子,能一眼看出数据的大小和差异,让读者迅速了解数据的分布情况。
对比性强:可对不同类别或组的数据进行直观对比,清晰展示数据之间的高低关系,便于发现数据间的差异和规律。
易于理解:无需复杂的解释,人们就能轻松读懂柱状图所表达的信息,是一种简单易懂的数据可视化方式。
(二)应用场景
数据对比:在比较不同类别数据的大小时非常适用。比如比较不同品牌手机的销量、不同城市的房价等,能快速分辨出哪个品牌销量高,哪个城市房价高。
数据变化趋势展示:可以展示同一事物在不同时间点的数据变化。例如,展示某公司历年的营收变化,能直观呈现出公司的发展趋势是增长、稳定还是下降。
数据分布分析:有助于分析数据在不同区间的分布情况。如统计学生考试成绩在各个分数段的人数分布,可了解成绩的整体分布态势,判断教学效果。
(三)实现过程
import matplotlib.pyplot as plt
# 设置 Matplotlib 支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用 SimHei 字体(黑体)
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 数据
categories = ['类别A', '类别B', '类别C', '类别D'] # 修改为中文类别
values = [10, 20, 15, 25]
# 绘制柱状图
plt.bar(categories, values, color='skyblue')
# 添加标题和标签
plt.title('柱状图示例 - Matplotlib') # 中文标题
plt.xlabel('类别') # 中文 X 轴标签
plt.ylabel('值') # 中文 Y 轴标签
# 显示图表
plt.show()
(四)结果
二、环形柱状图
(一)特点
对比与占比兼顾:既具有柱状图的特点,能够清晰地展示数据之间的对比情况,又有环形图的特性,可以直观地呈现各部分数据在总体中所占的比例关系。
节省空间:相比于传统的柱状图和环形图分开展示,环形柱状图将两种信息整合在一个图表中,在有限的空间内提供了更丰富的数据信息,使数据展示更加紧凑。
视觉效果独特:环形柱状图的环形结构和柱状元素相结合,形成了独特的视觉效果,能够吸引观众的注意力,增强数据展示的吸引力和表现力。
(二)应用场景
市场份额与销售业绩分析:可同时展示不同产品或品牌的市场份额占比以及具体的销售业绩数据,帮助企业了解自身产品在市场中的地位以及销售情况,以便制定相应的营销策略。
预算分配与使用情况:用于展示预算在不同项目或部门之间的分配比例,以及各部分预算的实际使用金额,便于监控和管理预算执行情况,及时发现预算超支或使用不足的项目。
员工绩效与团队构成分析:既能呈现团队中不同成员的绩效表现对比,又能展示各成员在团队整体绩效中所占的贡献比例,有助于评估员工表现和团队结构的合理性。
(三)实现过程
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows 系统常用字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
categories = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
values = [23, 45, 56, 78, 33, 67, 89, 12, 45, 60]
colors = plt.cm.viridis(np.linspace(0, 1, len(categories)))
# 创建图形和子图
fig, ax = plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))
# 设置角度
angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
angles += angles[:1] # 闭合环形
# 扩展 values 以匹配 angles 的长度
values += values[:1]
# 绘制柱状图
ax.bar(angles, values, color=colors, alpha=0.8, width=0.5)
# 设置标签
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories, fontsize=12)
# 设置角度标签的样式
ax.tick_params(axis='x', colors='black', labelsize=10)
ax.tick_params(axis='y', colors='gray', labelsize=8)
# 置网格线样式
ax.grid(color='gray', linestyle='--', linewidth=0.5, alpha=0.7)
# 设置环形图的半径范围
ax.set_ylim(0, max(values) + 10)
plt.title('环形柱状图示例', fontsize=16, pad=20)
plt.show()
(四)结果
三、子弹图
(一)特点
信息丰富:能在一个图表中同时展示多个数据指标,如实际值、目标值、进度等,让读者快速了解数据之间的关系和差异。
对比直观:通过不同颜色和长度的条形,清晰地展示实际值与目标值的对比,以及实际值在不同区间的分布情况,便于发现数据的偏离程度和趋势。
简洁高效:相比于一些复杂的图表,子弹图的设计简洁明了,能够在有限的空间内传达丰富的信息,提高数据展示的效率。
(二)应用场景
业务绩效评估:常用于展示业务指标的完成情况,如销售额、利润、市场份额等。通过将实际业绩与目标业绩进行对比,管理层可以快速了解业务进展,及时发现问题并采取相应的措施。
项目进度监控:在项目管理中,可用于展示项目的各项任务完成进度与计划进度的对比,帮助项目团队成员和管理者直观地掌握项目整体进度,及时调整资源分配和工作安排。
个人绩效评估:可用于展示员工个人的工作绩效,如销售业绩、生产效率、客户满意度等指标与团队平均水平或个人目标的对比,有助于员工了解自己的工作表现,同时也为绩效考核提供了直观的数据支持。
(三)实现过程
import matplotlib.pyplot as plt
import numpy as np
# 设置 Matplotlib 支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用 SimHei 字体(黑体)
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
def bullet_chart(actual, target, ranges, labels, title):
fig, ax = plt.subplots(figsize=(8, 2))
for i, (start, end) in enumerate(ranges):
ax.barh(0, end - start, left=start, height=0.5, color=plt.cm.RdYlGn(i / len(ranges)), alpha=0.5)
ax.barh(0, actual, height=0.5, color='skyblue')
ax.axvline(target, color='orange', linestyle='--', linewidth=2)
ax.set_xlim(0, max(max(ranges, key=lambda x: x[1])[1], actual) * 1.1)
ax.set_xticks(labels)
ax.set_yticks([]) # 隐藏 Y 轴刻度
ax.set_title(title, fontsize=14, fontweight='bold')
legend_labels = ['Low', 'Medium', 'High', 'Actual', 'Target']
legend_handles = [
plt.Rectangle((0, 0), 1, 1, color=plt.cm.RdYlGn(i / len(ranges)), alpha=0.5) for i in range(len(ranges))
]
legend_handles.append(plt.Rectangle((0, 0), 1, 1, color='skyblue'))
legend_handles.append(plt.Line2D([0, 1], [0, 1], color='orange', linestyle='--'))
ax.legend(legend_handles, legend_labels, loc='upper right', frameon=False)
# 显示图表
plt.show()
# 示例数据
actual_value = 70
target_value = 80
performance_ranges = [(0, 50), (50, 75), (75, 100)]
tick_labels = np.arange(0, 110, 10)
chart_title = "子弹图示例" # 使用中文标题
# 调用函数绘制子弹图
bullet_chart(actual_value, target_value, performance_ranges, tick_labels, chart_title)
(四)结果
四、哑铃图
(一)特点
对比性强:能直观突出两个时间点或数据组之间的差异,便于比较数据变化。
简洁明了:利用最少的元素,如两个圆圈和一根线段,清晰呈现比较结果,易于理解。
趋势可视化:通过线段连接两个数据点,可直接显示数据的增长、下降或保持不变等趋势。
排序性好:通常可根据其中一个数据点对类别进行排序,使变化趋势更直观。
(二)应用场景
市场分析:比较不同产品或品牌在不同时期的市场份额,帮助企业了解市场竞争态势,制定营销策略。
销售业绩评估:分析销售额、利润等指标在不同时间段的变化,评估销售团队表现,为销售决策提供依据。
A/B 测试:对比不同实验条件下的指标数据,如不同广告投放方式、产品设计方案等的效果,确定最优方案。
医疗研究:展示患者在治疗前后的身体指标变化,或比较不同治疗方案的效果,辅助医疗决策。
教育领域:用于比较学生在不同学期或不同教学方法下的成绩变化,评估教学效果。
(四)实现过程
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows 系统常用字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
def create_dumbbell_plot(categories, values1, values2, title):
fig, ax = plt.subplots(figsize=(10, 6))
ax.set_title(title, fontsize=16, pad=20)
for i, (v1, v2) in enumerate(zip(values1, values2)):
ax.plot([v1, v2], [i, i], color='gray', linestyle='--', linewidth=1, alpha=0.6)
ax.scatter(values1, np.arange(len(categories)), color='blue', label='值1', s=100)
ax.scatter(values2, np.arange(len(categories)), color='orange', label='值2', s=100)
ax.set_yticks(np.arange(len(categories)))
ax.set_yticklabels(categories, fontsize=12)
ax.set_xlim(min(min(values1), min(values2)) - 10, max(max(values1), max(values2)) + 10)
ax.grid(True, linestyle='--', alpha=0.6)
ax.legend(loc='upper right', fontsize=12)
plt.tight_layout()
plt.show()
categories = ['A', 'B', 'C', 'D', 'E']
values1 = [20, 40, 60, 80, 100] # 第一组数据
values2 = [30, 50, 70, 90, 110] # 第二组数据
title = '哑铃图示例'
create_dumbbell_plot(categories, values1, values2, title)
(五)结果
五、雷达图
(一)特点
多维度展示:雷达图可以在一个图表中同时展示多个维度的数据,将不同维度的数据以从中心点辐射出的坐标轴表示,方便对多个指标进行综合分析。
直观对比:通过观察不同数据系列所围成的多边形的形状、大小和位置,能够直观地比较各数据系列在不同维度上的表现差异,快速发现优势和劣势维度。
整体性强:雷达图能够呈现出数据的整体轮廓和特征,帮助分析者从宏观角度把握数据的综合情况,了解各个维度之间的相互关系和平衡状态。
视觉冲击力:其独特的图形形状具有较强的视觉吸引力,相较于传统的柱状图、折线图等,更容易引起读者的注意,使数据信息更加生动形象。
(二)应用场景
企业竞争力分析:用于评估企业在市场中的竞争力,可将市场份额、产品质量、创新能力、客户满意度、成本控制等多个维度的指标绘制在雷达图上,与竞争对手进行对比,清晰地看到自身的优势和不足,从而制定相应的发展战略。
个人能力评估:在人才选拔、绩效考核等场景中,对个人的多种能力进行评估,如沟通能力、团队协作能力、专业技能、领导能力、学习能力等,帮助了解个人在不同方面的表现,为个人发展和职业规划提供参考。
产品性能评估:在产品研发和改进过程中,分析产品在不同性能指标上的表现,如手机的续航能力、拍照效果、运行速度、屏幕显示质量、外观设计等,以便发现产品的优势和需要改进的地方,提升产品竞争力。
项目管理:监控项目在不同阶段的进展情况,如进度、成本、质量、资源利用效率等指标,及时发现项目中的问题和风险,采取相应的措施进行调整和优化。
市场调研:对不同品牌或产品在消费者心中的形象进行调查,将品牌知名度、美誉度、忠诚度、产品特色、价格合理性等因素绘制成雷达图,了解消费者对不同品牌或产品的评价和偏好。
(三)实现过程
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用 SimHei 字体(黑体)
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
def radar_chart(data, labels, title):
data = np.array(data) / max(data) # 将数据归一化到 [0, 1] 范围
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()
data = np.concatenate((data, [data[0]])) # 闭合多边形
angles += angles[:1] # 闭合角度
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
ax.fill(angles, data, color='skyblue', alpha=0.4)
ax.plot(angles, data, color='skyblue', linewidth=2)
ax.set_theta_offset(np.pi / 2) # 从顶部开始
ax.set_theta_direction(-1) # 顺时针方向
ax.set_rlabel_position(30) # 设置径向标签的位置
ax.set_rgrids([0.2, 0.4, 0.6, 0.8, 1.0], angle=60) # 设置径向网格线
ax.set_xticks(angles[:-1])
ax.set_xticklabels(labels)
ax.set_title(title, fontsize=16, fontweight='bold', pad=20)
plt.show()
# 示例数据
data = [5, 3, 8, 4, 7] # 每个维度的值
labels = ['维度一', '维度二', '维度三', '维度四', '维度五'] # 每个维度的标签(中文)
title = "雷达图示例"
# 调用函数绘制雷达图
radar_chart(data, labels, title)
(四)结果
六、平行坐标图
(一)特点
多变量可视化:可以同时展示多个变量的数据,每个变量对应一条平行的坐标轴,通过连接不同坐标轴上的数据点来表示一个数据记录,非常适合处理高维度数据。
趋势和关系展示:能够清晰地展示数据在不同变量之间的趋势和关系。通过观察线条的走向和分布,可以发现变量之间的相关性、聚类情况以及异常值等信息。
数据对比直观:方便对不同数据记录进行对比。不同线条之间的相对位置和形状差异能够直观地反映出数据记录在各个变量上的差异,有助于快速识别数据的特征和模式。
灵活性高:可以根据数据的特点和分析需求,灵活调整坐标轴的顺序、刻度范围等,以突出不同的信息和分析重点。
(二)应用场景
数据分析与挖掘:在数据探索阶段,帮助分析师快速了解高维度数据的分布特征、变量之间的关系,发现潜在的模式和规律,为进一步的数据分析和建模提供基础。
市场研究:分析消费者在多个维度(如年龄、收入、消费习惯、品牌偏好等)上的特征,进行市场细分,了解不同消费者群体的需求和行为差异,为市场营销策略的制定提供依据。
生物医学研究:处理基因表达数据、临床指标数据等高维度生物医学数据,展示不同样本在多个基因或指标上的表达情况,帮助研究人员发现疾病相关的生物标志物和潜在的病理机制。
工程与制造业:用于监控和分析工业生产过程中的多个参数(如温度、压力、速度、质量指标等),及时发现生产过程中的异常情况和潜在问题,优化生产工艺和提高产品质量。
地理信息系统(GIS):结合地理空间数据和其他属性数据(如人口密度、经济指标、环境参数等),展示不同区域在多个维度上的特征和差异,辅助地理分析和决策。
(三)实现过程
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import parallel_coordinates
# 设置 Matplotlib 支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用 SimHei 字体(黑体)
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 创建示例数据
data = {
'类别': ['A', 'B', 'C', 'D'],
'维度1': [1, 2, 3, 4],
'维度2': [4, 3, 2, 1],
'维度3': [2, 3, 4, 5]
}
df = pd.DataFrame(data)
# 创建图表和轴对象
fig, ax = plt.subplots(figsize=(10, 6))
# 绘制平行坐标图
parallel_coordinates(df, '类别', colormap='viridis', ax=ax)
# 添加标签和标题
ax.set_title('平行坐标图示例', fontsize=16, fontweight='bold')
ax.set_xlabel('维度', fontsize=12)
ax.set_ylabel('值', fontsize=12)
ax.legend(loc='upper right', title='类别')
# 显示图表
plt.show()
(四)结果
七、词云图
(一)特点
直观突出重点:通过词的大小来直观展示词的重要程度或出现频率。出现频率越高的词,在词云图中显示得越大,能够让观众一眼就抓住文本中的关键信息和重点词汇。
视觉吸引力强:具有独特的视觉效果,丰富的颜色搭配和不规则的排版形式使其相较于普通的文本展示更具吸引力,能够快速吸引读者的注意力,激发读者对文本内容的兴趣。
简洁高效:能够在有限的空间内传达大量的文本信息,以一种简洁的方式呈现文本的主要内容和主题,避免了冗长的文字描述,使信息的传达更加高效。
灵活性高:可以根据不同的需求和主题,灵活调整词云的形状、颜色、字体等样式,还可以结合背景图片进行个性化设计,以更好地契合具体的应用场景和表达意图。
(二)应用场景
文本分析与摘要:在对大量文本数据(如新闻报道、社交媒体帖子、学术论文等)进行分析时,词云图可以快速展示文本的核心内容和主要话题,帮助读者快速了解文本的大致主题和重点信息,起到文本摘要的作用。
市场调研:分析消费者的评论和反馈,将消费者提到的关键词以词云图的形式呈现,从而直观地了解消费者对产品或服务的关注点、满意度以及存在的问题,为企业改进产品和服务提供参考。
品牌宣传:展示品牌相关的关键词,突出品牌的核心价值和特色,强化品牌形象。例如,企业可以将与品牌理念、产品特点等相关的词汇制作成词云图,用于广告宣传、品牌推广等场合。
教育领域:在教学过程中,帮助学生快速掌握课程的重点内容和关键概念。例如,教师可以将某一章节的重要知识点制作成词云图,辅助学生进行学习和复习。
舆情监测:对网络舆情进行监测和分析,通过词云图展示舆情中出现的高频词汇,及时了解公众关注的热点话题和情绪倾向,为舆情应对和决策提供依据。
(三)实现过程
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 示例文本数据
text = """
Python 是一种广泛使用的高级编程语言,由 Guido van Rossum 创建。
它以简洁、易读的语法著称,适用于数据分析、人工智能、Web 开发等领域。
Python 拥有丰富的第三方库,如 NumPy、Pandas、Matplotlib 和 TensorFlow。
"""
# 创建词云对象
wordcloud = WordCloud(
font_path='simhei.ttf', # 设置字体文件路径(支持中文)
width=800, # 图像宽度
height=400, # 图像高度
background_color='white', # 背景颜色
max_words=100, # 最大显示的词汇数量
colormap='viridis' # 颜色映射
)
# 生成词云
wordcloud.generate(text)
# 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 隐藏坐标轴
plt.show()