63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from flask import Flask, render_template, request
|
|
import mysql.connector
|
|
import pandas as pd
|
|
import matplotlib.pyplot as plt
|
|
|
|
app = Flask(__name__)
|
|
|
|
# Fungsi untuk terhubung ke database dan mengambil data
|
|
def get_data_from_database():
|
|
conn = mysql.connector.connect(
|
|
host="localhost",
|
|
user="root",
|
|
password="",
|
|
database="steven"
|
|
)
|
|
cursor = conn.cursor()
|
|
cursor.execute("SELECT Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember FROM curah_hujan ORDER BY id DESC LIMIT 12")
|
|
rows = cursor.fetchall()
|
|
conn.close()
|
|
return rows
|
|
|
|
# Fungsi untuk melakukan diferensiasi pada data
|
|
def differentiate_data(data, d):
|
|
diff_data = []
|
|
for i in range(d, len(data)):
|
|
diff_data.append(data[i] - data[i-d])
|
|
return diff_data
|
|
|
|
@app.route('/dif2', methods=['GET', 'POST'])
|
|
def index():
|
|
if request.method == 'POST':
|
|
d_value = int(request.form['d_value'])
|
|
|
|
# Mengambil data dari database
|
|
data_from_db = get_data_from_database()
|
|
|
|
# Mengubah data menjadi DataFrame menggunakan pandas
|
|
df = pd.DataFrame(data_from_db, columns=['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'])
|
|
|
|
# Mengambil data januari-desember sebagai data yang akan didiferensialkan
|
|
data_to_differentiate = df.iloc[-1].values
|
|
|
|
# Melakukan diferensiasi pada data
|
|
differentiated_data = differentiate_data(data_to_differentiate, d_value)
|
|
|
|
# Plot data asli dan data yang telah didiferensialkan
|
|
plt.figure(figsize=(10, 5))
|
|
plt.subplot(2, 1, 1)
|
|
plt.plot(df.columns, data_to_differentiate, marker='o')
|
|
plt.title('Data Asli')
|
|
plt.subplot(2, 1, 2)
|
|
plt.plot(df.columns[d_value:], differentiated_data, marker='o')
|
|
plt.title('Data yang Telah Didiferensialkan (d=' + str(d_value) + ')')
|
|
plt.tight_layout()
|
|
|
|
# Simpan plot sebagai file gambar
|
|
plt.savefig('static/plot2.png')
|
|
|
|
return render_template('differensial2.html')
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True)
|