Как я могу изменить эти графики на линейные графики или другой более понятный тип?

#python #matplotlib

Вопрос:

Я хочу изменить следующие графики на линейные графики или другой более понятный тип.

 import os
import itertools
import pvlib
import numpy as np
import pandas as pd
import matplotlib.style
import matplotlib as mpl
import matplotlib.pyplot as plt
from pvlib import clearsky, atmosphere, solarposition
from pvlib.location import Location
from pvlib.iotools import read_tmy3

tus = Location(28.6, 77.2, 'Asia/Kolkata', 216, 'Delhi')
times = pd.date_range(start='2016-01-01', end='2016-12-31', freq='1min', tz=tus.tz)
cs = tus.get_clearsky(times)
cs.plot();
plt.grid()
plt.ylabel('Irradiance $W/m^2

Данные об облученности:

Данные об облученности

Кроме того, как я могу поместить легенду в подходящее положение.


Комментарии:

1. какая структура данных tus.get_clearsky возвращает данные? это фрейм данных? если это так, вам следует ознакомиться с документами для pandas.DataFrame.plot

2. @PaulH да, это фрейм данных. Что именно нужно посмотреть в документе?

3. pandas.pydata.org/docs

Ответ №1:

Панды строят линейные графики по умолчанию. График, который вы показываете, на самом деле является линейным графиком, просто в нем так много линий, что он выглядит как сплошной график!

Чтобы убедиться в этом, попробуйте построить только первые 1440 строк (один день), т. е.:

 cs.iloc[:1440].plot()
 

Если вы хотите визуализировать годовые данные, вам нужно выполнить какую-то агрегацию, чтобы это имело смысл. Например, пересчитайте среднесуточную интенсивность облучения и постройте график:

 cs.resample('1d').mean().plot()
 

Чтобы изменить легенду, используйте команду plt.legend:

 cs.resample('1d').mean().plot()
plt.legend(loc='upper right')
 

Комментарии:

1. Спасибо за вашу помощь. 🙂 Да, вы правы насчет типа графика. Я также попытался провести повторную выборку данных об облученности, но после повторной выборки все компоненты излучения уменьшились. Ось y графика в вопросе достигает 1000 Вт/м2, но сейчас она составляет всего 350 Вт/м2.

2. Имеет смысл, что он уменьшается, так как вы усредняете его за весь день (включая ночное время). Поэтому, если ваша максимальная мощность излучения в течение дня составляет 1000 Вт/м2, то среднесуточная мощность излучения 350 Вт/м2 кажется разумной.

);
plt.title('Ineichen, climatological turbidity');
Данные об облученности:

Данные об облученности

Кроме того, как я могу поместить легенду в подходящее положение.

Комментарии:

1. какая структура данных tus.get_clearsky возвращает данные? это фрейм данных? если это так, вам следует ознакомиться с документами для pandas.DataFrame.plot

2. @PaulH да, это фрейм данных. Что именно нужно посмотреть в документе?

3. pandas.pydata.org/docs

Ответ №1:

Панды строят линейные графики по умолчанию. График, который вы показываете, на самом деле является линейным графиком, просто в нем так много линий, что он выглядит как сплошной график!

Чтобы убедиться в этом, попробуйте построить только первые 1440 строк (один день), т. е.:


Если вы хотите визуализировать годовые данные, вам нужно выполнить какую-то агрегацию, чтобы это имело смысл. Например, пересчитайте среднесуточную интенсивность облучения и постройте график:


Чтобы изменить легенду, используйте команду plt.legend:


Комментарии:

1. Спасибо за вашу помощь. 🙂 Да, вы правы насчет типа графика. Я также попытался провести повторную выборку данных об облученности, но после повторной выборки все компоненты излучения уменьшились. Ось y графика в вопросе достигает 1000 Вт/м2, но сейчас она составляет всего 350 Вт/м2.

2. Имеет смысл, что он уменьшается, так как вы усредняете его за весь день (включая ночное время). Поэтому, если ваша максимальная мощность излучения в течение дня составляет 1000 Вт/м2, то среднесуточная мощность излучения 350 Вт/м2 кажется разумной.