比较与排序类可视化图像

一、 柱状图(Bar Chart)

1.特点:

      柱状图通过柱子的高度或长度表示数据的大小,柱子可以是垂直的(柱状图)或水平的(条形图)。柱状图直观、易于理解,适合展示离散数据。

2.应用场景:

        比较不同类别的数据(如销售额、人口数量);
        展示时间序列数据(如月度销售额)。
3.优点:
        简单直观,适合大多数场景;
       易于添加标签和注释。
4.缺点:
       不适合展示过多类别(容易显得杂乱);
       无法展示数据的变化趋势。
5.实现:

import matplotlib.pyplot as plt
import seaborn as sns

categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]

plt.bar(categories, values, color='skyblue')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('Bar Chart Example')
plt.show()

结果:生成一个垂直柱状图,柱子高度表示每个类别的值。

 

二、环形柱状图(Circular Bar Chart)
1.特点:
     环形柱状图是柱状图的变体,柱子围绕一个圆形排列,适合展示周期性数据或类别较多的数据。
2.应用场景:
     展示周期性数据(如月份、星期);
     比较多个类别的数据(如不同产品的年度销量)。
3.优点:
      视觉效果新颖,适合展示较多类别;
     适合展示周期性数据。
4.缺点:
      阅读难度较高,不适合精确比较;
      实现复杂度较高。
5.实现工具:

import matplotlib.pyplot as plt
import numpy as np

categories = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
values = [10, 20, 15, 25, 30, 35, 40, 45]

angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
values += values[:1]
angles += angles[:1]

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(angles, values, 'o-', linewidth=2, color='blue')
ax.fill(angles, values, color='blue', alpha=0.25)
ax.set_yticklabels([])
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)
plt.title('Circular Bar Chart Example')
plt.show()

    结果:生成一个环形柱状图,柱子围绕圆形排列,高度表示每个类别的值。

 

三、子弹图(Bullet Graph)

1.特点:
        子弹图通过一个主条(实际值)和一个或多个参考条(目标值)展示数据,适合在有限空间内展示绩效数据。
2.应用场景:
        绩效评估(如销售额是否达到目标);
        KPI(关键绩效指标)展示。
3.优点:
       简洁高效,适合展示目标与实际值的对比;
      占用空间小。
4.缺点:
      不适合展示多维度数据;
       实现复杂度较高。
5.实现工具:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.barh(0, 75, height=0.5, color='lightgrey')  # 背景条
ax.barh(0, 50, height=0.3, color='blue')  # 实际值
ax.axvline(60, color='red', linestyle='--', linewidth=2)  # 目标值
ax.set_xlim(0, 100)
ax.set_yticks([])
plt.title('Bullet Graph Example')
plt.show()

结果:生成一个水平子弹图,蓝色条表示实际值,红色虚线表示目标值。

四、哑铃图(Dumbbell Plot)

1.特点:
      哑铃图通过连接两个点的线段展示数据的变化,适合展示两个时间点或条件下的数据差异。
2.应用场景:
      比较两个时间点的数据(如不同年份的销售额);
      展示不同条件下的数据变化(如不同地区的温度变化)。
3.优点:
      直观展示数据变化;
      适合展示少量类别的数据。
4.缺点:
      不适合展示多维度数据;
      实现复杂度较高。
5.实现:

import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D']
start_values = [10, 20, 15, 25]
end_values = [15, 25, 20, 30]

for i, (start, end) in enumerate(zip(start_values, end_values)):
    plt.plot([start, end], [i, i], marker='o', color='blue', markersize=10)

plt.yticks(range(len(categories)), categories)
plt.xlabel('Values')
plt.title('Dumbbell Plot Example')
plt.show()

结果:生成一个哑铃图,每个类别的两个点通过线段连接,表示数据的变化。

 

五、雷达图(Radar Chart)
1.特点:
      雷达图通过多个轴展示多维数据,适合展示多个维度的比较。
2.应用场景:
      技能评估(如员工技能的多维度比较);
      产品特性比较(如不同产品的性能指标)。
3.优点:
      适合展示多维数据;
      视觉效果突出。
4.缺点:
 不适合展示过多维度。
5.实现:

import matplotlib.pyplot as plt
import numpy as np

categories = ['A', 'B', 'C', 'D', 'E']
values = [4, 3, 2, 5, 1]

angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False).tolist()
values += values[:1]
angles += angles[:1]

fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(angles, values, 'o-', linewidth=2, color='blue')
ax.fill(angles, values, color='blue', alpha=0.25)
ax.set_yticklabels([])
ax.set_xticks(angles[:-1])
ax.set_xticklabels(categories)
plt.title('Radar Chart Example')
plt.show()

 

结果:生成一个雷达图,每个轴表示一个维度,多边形表示数据值。

 

六、平行坐标图(Parallel Coordinates Plot)
1.特点:
       平行坐标图通过多个平行轴展示高维数据,适合展示数据的模式和关系。
2.应用场景:
      高维数据的可视化(如机器学习特征分析);
      多维数据比较(如不同产品的多个指标)。
3.优点:
      适合展示高维数据;
      可以展示数据的模式和关系。
4.缺点:
      阅读难度较高;
     不适合展示过多数据点。
5.实现:

import pandas as pd
from pandas.plotting import parallel_coordinates
import matplotlib.pyplot as plt

data = pd.DataFrame({
    'Feature1': [1, 2, 3, 4],
    'Feature2': [4, 3, 2, 1],
    'Feature3': [2, 4, 1, 3],
    'Class': ['A', 'B', 'A', 'B']
})

parallel_coordinates(data, 'Class', color=('blue', 'red'))
plt.title('Parallel Coordinates Plot Example')
plt.show()

 

结果:生成一个平行坐标图,每个轴表示一个特征,线条表示不同类别的数据。

 

七、词云图(Word Cloud)
1.特点:
       词云图通过字体大小展示词语的频率,适合展示文本数据中的关键词。
2.应用场景:
      文本分析(如新闻关键词提取);
      舆情分析(如社交媒体评论的热门话题)。
3.优点:
    直观展示文本关键词;
    视觉效果突出。
4.缺点:
    无法展示精确数据;
    不适合展示非文本数据。
5.实现

from wordcloud import WordCloud
import matplotlib.pyplot as plt

text = "Python is a great language for data analysis and visualization. Python is widely used in data science."

wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)

plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('Word Cloud Example')
plt.show()

 

结果:生成一个词云图,词语的大小表示其在文本中的频率。

 

比较总结

图表类型适用场景优点缺点
柱状图 比较不同类别的数据 简单直观,易于理解 不适合展示过多类别
环形柱状图 展示周期性数据或较多类别的数据 视觉效果新颖,适合展示周期性数据 阅读难度较高,实现复杂
子弹图 展示目标值与实际值的对比 简洁高效,适合绩效评估 不适合展示多维度数据
哑铃图 展示两个时间点或条件下的数据变化 直观展示数据变化 不适合展示多维度数据
雷达图 展示多维数据的比较 适合展示多维数据 阅读难度较高,不适合过多维度
平行坐标图 展示高维数据的模式和关系 适合展示高维数据 阅读难度较高,不适合过多数据点
词云图 展示文本数据中的关键词 直观展示文本关键词 无法展示精确数据

 

选择建议

     简单比较,选择 柱状图;
    展示周期性数据,选择 环形柱状图;
    展示目标值与实际值的对比,选择 子弹图;
    展示数据的变化趋势,选择 哑铃图;
    展示多维数据的比较,选择 雷达图

    展示高维数据的模式和关系,选择 平行坐标图;

    展示文本数据中的关键词,选择词云图。

通过合理选择图表类型,可以更有效地传达数据信息,提升数据分析的效果。

posted @ 2025-03-24 10:35  小菲困困  阅读(103)  评论(0)    收藏  举报