Error Bar Chart

Password Manager Security Scores

Security, features, and usability comparison of popular password managers.

Output
Password Manager Security Scores
Python
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(42)

managers = ['1Password', 'Bitwarden', 'LastPass', 'Dashlane', 'Keeper']
encryption = np.array([98, 97, 92, 96, 95])
features = np.array([92, 88, 85, 90, 87])
usability = np.array([90, 82, 88, 85, 80])
err = np.array([2, 3, 4, 3, 3])

fig, ax = plt.subplots(figsize=(10, 6), facecolor='#ffffff')
ax.set_facecolor('#ffffff')

x = np.arange(len(managers))
width = 0.25

ax.bar(x - width, encryption, width, yerr=err, label='Encryption Score',
       color='#6CF527', edgecolor='white', linewidth=1.5, capsize=4,
       error_kw={'ecolor': '#374151', 'elinewidth': 1.5})
ax.bar(x, features, width, yerr=err, label='Feature Score',
       color='#27D3F5', edgecolor='white', linewidth=1.5, capsize=4,
       error_kw={'ecolor': '#374151', 'elinewidth': 1.5})
ax.bar(x + width, usability, width, yerr=err, label='Usability Score',
       color='#F5B027', edgecolor='white', linewidth=1.5, capsize=4,
       error_kw={'ecolor': '#374151', 'elinewidth': 1.5})

ax.axhline(y=90, color='#F5276C', linestyle='--', linewidth=2, alpha=0.7)

ax.set_xlabel('Password Manager', fontsize=12, color='#374151', fontweight='600')
ax.set_ylabel('Score', fontsize=12, color='#374151', fontweight='600')
ax.set_title('Password Manager Security Comparison', fontsize=15, 
             color='#1f2937', fontweight='bold', pad=20)

ax.set_xticks(x)
ax.set_xticklabels(managers, fontsize=11)
ax.legend(facecolor='#ffffff', edgecolor='#e5e7eb', fontsize=10)
ax.tick_params(colors='#6b7280', labelsize=10)
ax.set_ylim(70, 105)
ax.grid(True, axis='y', alpha=0.4, color='#e5e7eb')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_color('#d1d5db')
ax.spines['bottom'].set_color('#d1d5db')

plt.tight_layout()
plt.show()
Library

Matplotlib

Category

Statistical

Did this help you?

Support PyLucid to keep it free & growing

Support