|
Метки: замена ручная отмена |
| Строка 5: |
Строка 5: |
| |height=1000 | | |height=1000 |
| }} | | }} |
|
| |
| === Погода ===
| |
|
| |
| [[Файл:График изменения погоды.png|мини]]
| |
| <syntaxhighlight lang="R" line>
| |
| library(tidyverse)
| |
| import requests
| |
| import pandas as pd
| |
| import matplotlib.pyplot as plt
| |
| from datetime import datetime, timedelta
| |
| # Координаты города (например, Москва)
| |
| LATITUDE = 55.7558
| |
| LONGITUDE = 37.6173
| |
| CITY_NAME = "Москва"
| |
|
| |
| # Даты: последние 7 дней
| |
| end_date = datetime.now().date()
| |
| start_date = end_date - timedelta(days=7)
| |
|
| |
| # URL для запроса к Open‑Meteo
| |
| URL = (
| |
| f"https://api.open-meteo.com/v1/forecast?"
| |
| f"latitude={LATITUDE}&longitude={LONGITUDE}&"
| |
| f"start_date={start_date}&end_date={end_date}&"
| |
| f"hourly=temperature_2m,precipitation,wind_speed_10m&"
| |
| f"timezone=Europe/Moscow"
| |
| )
| |
| response = requests.get(URL)
| |
| data = response.json()
| |
| # Извлекаем временные метки и параметры
| |
| timestamps = data['hourly']['time']
| |
| temperatures = data['hourly']['temperature_2m']
| |
| precipitations = data['hourly']['precipitation']
| |
| wind_speeds = data['hourly']['wind_speed_10m']
| |
|
| |
| # Создаём DataFrame
| |
| df = pd.DataFrame({
| |
| 'Время': timestamps,
| |
| 'Температура, °C': temperatures,
| |
| 'Осадки, мм': precipitations,
| |
| 'Скорость ветра, м/с': wind_speeds
| |
| })
| |
|
| |
| # Преобразуем столбец 'Время' в datetime
| |
| df['Время'] = pd.to_datetime(df['Время'])
| |
| df.to_csv('weather_data_openmeteo.csv', index=False, encoding='utf-8')
| |
| print("Данные сохранены в weather_data_openmeteo.csv")
| |
| # Создаём фигуру с тремя подграфиками
| |
| fig, axes = plt.subplots(3, 1, figsize=(14, 10), sharex=True)
| |
|
| |
| # График температуры
| |
| axes[0].plot(df['Время'], df['Температура, °C'], color='red', linewidth=1)
| |
| axes[0].set_title(f'Температура в {CITY_NAME} за последние 7 дней')
| |
| axes[0].set_ylabel('Температура, °C')
| |
| axes[0].grid(True)
| |
|
| |
| # График осадков
| |
| axes[1].bar(df['Время'], df['Осадки, мм'], color='blue', alpha=0.7, width=0.04)
| |
| axes[1].set_title('Осадки')
| |
| axes[1].set_ylabel('Осадки, мм')
| |
| axes[1].grid(True)
| |
|
| |
| # График скорости ветра
| |
| axes[2].plot(df['Время'], df['Скорость ветра, м/с'], color='green', linewidth=1)
| |
| axes[2].set_title('Скорость ветра')
| |
| axes[2].set_ylabel('Скорость ветра, м/с')
| |
| axes[2].set_xlabel('Дата и время')
| |
| axes[2].grid(True)
| |
|
| |
| plt.tight_layout()
| |
| plt.show()
| |
|
| |
| </syntaxhighlight>
| |
|
| |
| {{Шаблон:TidyR}}
| |