Matplotlib怎么画鱼骨图Ishikawa Diagram?

文章导读
Previous Quiz Next Ishikawa 图,也称为鱼骨图或因果图,是一种用于识别和分析特定问题或结果可能原因的可视化表示。该图看起来像鱼的骨架,“头部”代表问题或结果,而“骨头”(从中延伸的分支)代表不同类别的潜在原因。
📋 目录
  1. Matplotlib 中的 Ishikawa 图
  2. 示例 - Ishikawa 图 - 软件开发问题
  3. Example - Ishikawa Diagram - Manufacturing Defects
  4. Example - Ishikawa Diagram - Project Management Challenges
  5. Example - Ishikawa Diagram - Customer Service Issues
A A

Matplotlib - Ishikawa 图



Previous
Quiz
Next

Ishikawa 图,也称为鱼骨图或因果图,是一种用于识别和分析特定问题或结果可能原因的可视化表示。该图看起来像鱼的骨架,“头部”代表问题或结果,而“骨头”(从中延伸的分支)代表不同类别的潜在原因。

想象你在一家餐厅工作,客户关于长时间等待的投诉增加了。你可以使用 Ishikawa 图来识别可能的原因。鱼骨结构可能包括“Processes”、“Staff”、“Equipment”和“Management”等类别。通过可视化映射这些因素,你可以系统地分析和解决长时间等待的根本原因,从而提供更优质的服务 −

Ishikawa Diagram

Matplotlib 中的 Ishikawa 图

我们可以使用 Matplotlib 中的条形图来创建 Ishikawa 图,以表示主要类别(骨头)和每个类别中的子类别。每个子类别可能包含导致观察到的问题或结果的潜在原因。该图帮助我们以结构化的方式理解问题的根本原因。

现在,让我们学习并使用 Matplotlib 实现 Ishikawa 图的各种类别和子类别。

示例 - Ishikawa 图 - 软件开发问题

matplotlib 中标题为“Software Development Issues”的 Ishikawa 图是一种可视化工具,用于识别和分类软件开发领域中问题的潜在原因。

在以下示例中,我们创建了一个 Ishikawa 图来表示软件开发问题的潜在原因。该图将原因分类为 People、Process、Product 和 Technology。每个类别中的子类别有助于识别影响软件开发的具体因素 −

import matplotlib.pyplot as plt

# 定义软件开发问题的类别和子类别
categories = ['People', 'Process', 'Product', 'Technology']
subcategories = {
    'People': ['Skills', 'Team Dynamics', 'Communication'],
    'Process': ['Requirements', 'Planning', 'Testing'],
    'Product': ['Functionality', 'Usability', 'Performance'],
    'Technology': ['Tools', 'Frameworks', 'Integration']
}

# 创建 Matplotlib figure 和 axis
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制软件开发问题的 Ishikawa 图
for i, category in enumerate(categories):
    ax.barh(category, 1, color='white', edgecolor='black')
    for j, subcategory in enumerate(subcategories[category]):
        ax.plot([0, 1], [i + (j + 1) / (len(subcategories[category]) + 1)] * 2, color='black')

# 自定义图表外观并显示
ax.set_xlim(0, 1)
ax.set_yticks(range(len(categories)))
ax.set_yticklabels(categories)
ax.set_title('Ishikawa Diagram - Software Development Issues')
ax.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()

输出

执行上述代码后,我们将得到以下输出 −

Software Development Issues

Example - Ishikawa Diagram - Manufacturing Defects

Matplotlib 中的标题为“Manufacturing Defects”的 Ishikawa Diagram 就像一张视觉地图,帮助我们理解制造过程中可能出现缺陷的原因。

在这里,制造缺陷的原因被分类为 Materials、Machines、Methods、Manpower 和 Measurement。每个类别进一步细分为子类别,从而允许对制造过程中导致缺陷的潜在问题进行详细分析。

例如,它检查材料是否优质、机器是否维护良好、方法是否正确执行、工人是否具备技能且未超负荷,以及测量是否准确 −

import matplotlib.pyplot as plt

# 定义制造缺陷的类别和子类别
categories = ['Materials', 'Machines', 'Methods', 'Manpower', 'Measurement']
subcategories = {
    'Materials': ['Quality', 'Compatibility', 'Availability'],
    'Machines': ['Equipment', 'Maintenance', 'Calibration'],
    'Methods': ['Procedures', 'Standards', 'Workflows'],
    'Manpower': ['Skills', 'Training', 'Workload'],
    'Measurement': ['Tools', 'Accuracy', 'Frequency']
}

# 创建 Matplotlib 的 figure 和 axis
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制制造缺陷的 Ishikawa diagram
for i, category in enumerate(categories):
    ax.barh(category, 1, color='white', edgecolor='black')
    for j, subcategory in enumerate(subcategories[category]):
        ax.plot([0, 1], [i + (j + 1) / (len(subcategories[category]) + 1)] * 2, color='black')

# 自定义图表外观并显示
ax.set_xlim(0, 1)
ax.set_yticks(range(len(categories)))
ax.set_yticklabels(categories)
ax.set_title('Ishikawa Diagram - Manufacturing Defects')
ax.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()

Output

以下是上述代码的输出 −

Manufacturing Defects

Example - Ishikawa Diagram - Project Management Challenges

Matplotlib 中的“Project Management Challenges” Ishikawa Diagram 就像一张视觉地图,用于理解项目管理中面临的潜在挑战。它被组织成鱼骨状结构,包含 People、Process、Tools 和 Communication 等不同类别。在每个类别下,它探讨了团队动态、规划、软件工具和沟通方法等具体因素。

现在,我们为项目管理挑战创建 Ishikawa diagram,类别和子类别提供了一种结构化的方式来分析和解决已识别的挑战 −

import matplotlib.pyplot as plt

# 定义项目管理挑战的类别和子类别
categories = ['People', 'Process', 'Tools', 'Communication']
subcategories = {
    'People': ['Skills', 'Team Dynamics', 'Leadership'],
    'Process': ['Planning', 'Execution', 'Monitoring'],
    'Tools': ['Software', 'Hardware', 'Productivity Apps'],
    'Communication': ['Internal', 'External', 'Documentation']
}

# 创建 Matplotlib 的 figure 和 axis
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制项目管理挑战的 Ishikawa diagram
for i, category in enumerate(categories):
    ax.barh(category, 1, color='white', edgecolor='black')
    for j, subcategory in enumerate(subcategories[category]):
        ax.plot([0, 1], [i + (j + 1) / (len(subcategories[category]) + 1)] * 2, color='black')

# 自定义图表外观并显示
ax.set_xlim(0, 1)
ax.set_yticks(range(len(categories)))
ax.set_yticklabels(categories)
ax.set_title('Ishikawa Diagram - Project Management Challenges')
ax.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()

Output

上述代码的输出如下 −

Project Management Challenges

Example - Ishikawa Diagram - Customer Service Issues

Matplotlib 中的“Customer Service Issues”鱼骨图是一种可视化地图,用于理解和解决客户服务中的潜在挑战。它类似于鱼骨,将问题分类为关键领域:People、Process、Policies 和 Technology。在这些类别中,它查找特定因素,如培训、响应时间、政策和技术使用。

在下面的示例中,我们将创建如上所述的客户服务问题鱼骨图 −

import matplotlib.pyplot as plt

# 定义客户服务问题的类别和子类别
categories = ['People', 'Process', 'Policies', 'Technology']
subcategories = {
    'People': ['Training', 'Customer Interaction', 'Communication'],
    'Process': ['Response Time', 'Issue Resolution', 'Feedback Handling'],
    'Policies': ['Return Policies', 'Refund Procedures', 'Complaint Handling'],
    'Technology': ['Software', 'Hardware', 'Communication Channels']
}

# 创建 Matplotlib 的 figure 和 axis
fig, ax = plt.subplots(figsize=(10, 6))

# 绘制客户服务问题的鱼骨图
for i, category in enumerate(categories):
    ax.barh(category, 1, color='white', edgecolor='black')
    for j, subcategory in enumerate(subcategories[category]):
        ax.plot([0, 1], [i + (j + 1) / (len(subcategories[category]) + 1)] * 2, color='black')

# 自定义图表外观并显示
ax.set_xlim(0, 1)
ax.set_yticks(range(len(categories)))
ax.set_yticklabels(categories)
ax.set_title('Ishikawa Diagram - Customer Service Issues')
ax.grid(axis='x', linestyle='--', alpha=0.7)
plt.show()

Output

得到的输出如下所示 −

Customer Service Issues