74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
import matplotlib.dates as mdates
|
|
from datetime import datetime
|
|
|
|
# Data
|
|
years = [2025, 2027, 2029, 2031, 2033, 2035]
|
|
dates = [datetime(year, 2, 12) for year in years]
|
|
ages = [65, 67, 69, 71, 73, 75]
|
|
|
|
# Current trend data (red line)
|
|
current_trend = [51.2, 52.2, 53.3, 54.4, 55.5, 56.7]
|
|
|
|
# Improved trend data (green line)
|
|
improved_trend = [51.2, 38.6, 28.6, 21, 15.4, 11.3]
|
|
|
|
# Create figure and axis
|
|
fig, ax = plt.subplots(figsize=(12, 6))
|
|
|
|
# Plot lines
|
|
current_line, = ax.plot(dates, current_trend, 'o-', color='#FF7B7B', linewidth=2, markersize=8)
|
|
improved_line, = ax.plot(dates, improved_trend, 'o-', color='#9ABE64', linewidth=2, markersize=8)
|
|
|
|
# Plot the initial data point with cyan marker
|
|
ax.plot([dates[0]], [current_trend[0]], 'o', color='#59D8E6', markersize=10)
|
|
|
|
# Add values to the lines
|
|
for i, (x, y) in enumerate(zip(dates, current_trend)):
|
|
ax.text(x, y+1, f"{y}", ha='center', va='bottom', color='#FF7B7B')
|
|
|
|
for i, (x, y) in enumerate(zip(dates, improved_trend)):
|
|
ax.text(x, y-1.5, f"{y}", ha='center', va='top', color='#9ABE64')
|
|
|
|
# Set x-axis format
|
|
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
|
|
plt.xticks(dates)
|
|
|
|
# Add a second x-axis for ages
|
|
ax2 = ax.twiny()
|
|
ax2.set_xlim(ax.get_xlim())
|
|
ax2.set_xticks(ax.get_xticks())
|
|
ax2.set_xticklabels(ages)
|
|
|
|
# Set y-axis limits
|
|
ax.set_ylim(0, 75)
|
|
ax.set_yticks(range(0, 71, 10))
|
|
|
|
# Add grid
|
|
ax.grid(axis='y', linestyle='-', alpha=0.3)
|
|
|
|
# Add title
|
|
plt.suptitle('Risiko Saat Ini dan Trend Peningkatannya\nCurrent and Improved Risk Trends',
|
|
fontsize=12, fontweight='bold', y=0.98, x=0.07, ha='left', fontfamily='monospace')
|
|
|
|
# Add y-axis label
|
|
ax.set_ylabel('Risiko(%)\nRisk(%)', color='gray')
|
|
|
|
# Add legend
|
|
legend_elements = [
|
|
plt.Line2D([0], [0], marker='o', color='#FF7B7B', label='Tren saat ini\nCurrent trend', markersize=8, linewidth=2),
|
|
plt.Line2D([0], [0], marker='o', color='#9ABE64', label='Tren yang diinginkan\nImproved trend', markersize=8, linewidth=2),
|
|
plt.Line2D([0], [0], marker='o', color='#59D8E6', label='Poin data Anda\nYour data points', markersize=8, linewidth=0)
|
|
]
|
|
|
|
legend = fig.legend(handles=legend_elements, loc='upper right', ncol=3,
|
|
bbox_to_anchor=(0.99, 0.99), frameon=True)
|
|
|
|
# Adjust layout
|
|
plt.tight_layout()
|
|
plt.subplots_adjust(top=0.85)
|
|
|
|
filename = '4_line_skenario.png'
|
|
plt.savefig(filename, dpi=300, bbox_inches='tight')
|
|
print(f"Image saved as {filename}") |