File:English Wikipedia article for creation (AfC) decline reasons chart – Business AfCs (by 16 subcategories).svg

Uploaded by Prototyperspective
Upload date 2026-04-22T22:35:21Z
MIME type image/svg+xml
Dimensions 1309 × 1383 px
File size 165.4 KB

Summary

Description
English: Visualization of the data in the Wikipedia AfC approval rates report – "This study presents the first large-scale empirical audit of Wikipedia’s English-language Articles for creation (AfC) workflow, which is the primary process for new, inexperienced, and conflict-of-interest users to create Wikipedia articles. Lumino analyzed 1,009 draft submissions that survived initial triage during two sampling windows in late 2025."
Date
Source Own work; Data source: https://www.luminodigital.com/wikipedia-afc-approval-rates-report
Author Prototyperspective

SVG development

InfoField
 The SVG code is valid.
 This plot was created with Matplotlib.

Source code

InfoField

Python code

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

# Data
data = {
    "Category": [
        "Business (all entries)", "Construction", "Entertainment", "Finance", "Healthcare",
        "Hospitality", "Legal", "Manufacturer", "Marketing", "Media", "Other",
        "Product", "Real estate", "Resource extraction", "Retail", "Technology", "Transportation"
    ],
    "Total": [142, 2, 7, 9, 7, 11, 1, 12, 1, 5, 3, 13, 3, 4, 12, 47, 5],
    "Approved": [22, 0, 1, 1, 3, 3, 0, 1, 0, 1, 0, 3, 1, 2, 1, 3, 2],
    "Declined": [117, 2, 6, 8, 4, 7, 1, 11, 1, 4, 3, 10, 2, 2, 11, 42, 3],
    "Draft": [2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0],
    "Deleted/Other": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    "Approval%": [15, 0, 14, 11, 43, 27, 0, 8, 0, 20, 0, 23, 33, 50, 8, 6, 40],
    "Decline%": [82, 100, 86, 89, 57, 64, 100, 92, 100, 80, 100, 77, 67, 50, 92, 89, 60],
}
df = pd.DataFrame(data)

sns.set(style="whitegrid")
palette = sns.color_palette(["#4CAF50", "#F44336", "#FFC107", "#9E9E9E"])

fig = plt.figure(constrained_layout=False, figsize=(12, 10))
gs = fig.add_gridspec(3, 2, height_ratios=[1, 1, 0.7], width_ratios=[1, 0.02], hspace=0.35)

# 1) Stacked bar: Approved / Declined / Others
ax0 = fig.add_subplot(gs[0, 0])
ind = np.arange(len(df))
width = 0.6
p1 = ax0.bar(ind, df["Approved"], width, label="Approved", color=palette[0])
p2 = ax0.bar(ind, df["Declined"], width, bottom=df["Approved"], label="Declined", color=palette[1])
bottom2 = df["Approved"] + df["Declined"]
p3 = ax0.bar(ind, df["Draft"], width, bottom=bottom2, label="Draft", color=palette[2])
p4 = ax0.bar(ind, df["Deleted/Other"], width, bottom=bottom2 + df["Draft"], label="Deleted/Other", color=palette[3])

ax0.set_xticks(ind)
ax0.set_xticklabels(df["Category"], rotation=45, ha="right", fontsize=9)
ax0.set_ylabel("Count")
ax0.set_title("Submission Outcomes by Business Category (stacked)")
ax0.legend(frameon=False, fontsize=9)
ax0.set_ylim(0, df["Total"].max() * 1.08)
for i, tot in enumerate(df["Total"]):
    ax0.text(i, tot + df["Total"].max() * 0.01, str(tot), ha="center", fontsize=8, weight="bold")

# 2) Approval vs Decline % grouped bars
ax1 = fig.add_subplot(gs[1, 0])
w = 0.35
ax1.bar(ind - w/2, df["Approval%"], w, label="Approval %", color="#1976D2")
ax1.bar(ind + w/2, df["Decline%"], w, label="Decline %", color="#D32F2F")
ax1.set_xticks(ind)
ax1.set_xticklabels(df["Category"], rotation=45, ha="right", fontsize=9)
ax1.set_ylabel("Percentage (%)")
ax1.set_ylim(0, 105)
ax1.set_title("Approval vs Decline Percentage by Business Category")
ax1.legend(frameon=False, fontsize=9)
for i, (a, d) in enumerate(zip(df["Approval%"], df["Decline%"])):
    ax1.text(i - w/2, a + 3, f"{a}%", ha="center", fontsize=8)
    ax1.text(i + w/2, d + 3, f"{d}%", ha="center", fontsize=8)

# 3) Horizontal bar: Declined count proportion (sorted) to highlight problem areas
ax2 = fig.add_subplot(gs[2, 0])
decline_prop = df["Declined"] / df["Total"] * 100
order = decline_prop.sort_values(ascending=False).index
y_pos = np.arange(len(df))
ax2.barh(y_pos, decline_prop.iloc[order], color="#F44336")
ax2.set_yticks(y_pos)
ax2.set_yticklabels(df["Category"].iloc[order], fontsize=9)
ax2.set_xlabel("Declined as % of Total")
ax2.set_title("Decline Proportion by Business Category (sorted)")
for i, val in enumerate(decline_prop.iloc[order]):
    ax2.text(val + 1, i, f"{val:.0f}%", va="center", fontsize=8)

plt.tight_layout(rect=[0, 0, 1, 0.98])
plt.show()

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution
This file is licensed under the Creative Commons Attribution 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

169,414 byte

image/svg+xml

d30c6e192066b2e8ed43e01b809d859070b7738d