| name | matplotlib |
| description | Matplotlib library for creating scientific visualizations. Use for plotting data, creating Arrhenius plots, adding legends, labels, and saving figures to files. |
Matplotlib
Matplotlib is the standard Python library for creating scientific visualizations.
Basic Plotting
import matplotlib.pyplot as plt
import numpy as np
# Create figure and axis
fig, ax = plt.subplots(figsize=(10, 6))
# Line plot
x = np.linspace(0, 10, 100)
y = np.sin(x)
ax.plot(x, y, label='sin(x)')
# Scatter plot with markers
ax.scatter(x[::10], y[::10], marker='o', s=50)
# Labels and title
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_title('Sample Plot')
ax.legend()
# Save figure
plt.savefig('/app/output/plot.png', dpi=150, bbox_inches='tight')
plt.close()
Multi-Series Arrhenius Plot
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10, 8))
colors = plt.cm.tab10.colors
markers = ['o', 's', '^', 'D', 'v', '<', '>', 'p']
for i, (name, group) in enumerate(df.groupby('electrolyte_id')):
# Data points
inv_t = 1000 / (group['temperature_c'] + 273.15)
ln_sigma = np.log(group['conductivity_scm'])
# Scatter plot
ax.scatter(inv_t, ln_sigma,
color=colors[i % len(colors)],
marker=markers[i % len(markers)],
s=80, label=name)
# Fit line
slope, intercept = np.polyfit(inv_t, ln_sigma, 1)
x_fit = np.linspace(inv_t.min(), inv_t.max(), 100)
y_fit = slope * x_fit + intercept
ax.plot(x_fit, y_fit, color=colors[i % len(colors)],
linestyle='--', alpha=0.7)
ax.set_xlabel('1000/T (K$^{-1}$)', fontsize=12)
ax.set_ylabel('ln($\\sigma$) (S/cm)', fontsize=12)
ax.set_title('Arrhenius Plot: Electrolyte Conductivity', fontsize=14)
ax.legend(loc='best')
ax.grid(True, alpha=0.3)
plt.savefig('/app/output/arrhenius_plot.png', dpi=150, bbox_inches='tight')
plt.close()
Multiple Subplots
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# Access individual subplots
axes[0, 0].plot(x, y1)
axes[0, 0].set_title('Plot 1')
axes[0, 1].scatter(x, y2)
axes[0, 1].set_title('Plot 2')
axes[1, 0].bar(categories, values)
axes[1, 1].hist(data, bins=20)
plt.tight_layout()
plt.savefig('/app/output/multi_plot.png', dpi=150)