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}")