При использовании plotly не должно иметь значения, являются ли ваши источники подключениями к базе данных или CSV-файлами. Скорее всего, вы будете обрабатывать эту часть через pandas данных. Но так как вы говорите о базах данных, я собираюсь показать вам, как вы можете легко построить диаграмму на основе набора данных с типичной структурой базы данных, где вам часто приходится полагаться на группирование и подмножество данных для отображения изменений со временем для разных подкатегорий ваших данных. Plotly express имеет несколько интересных наборов данных (dir(px.data)
), например, набор данных gapminder:
country continent year lifeExp pop gdpPercap iso_alpha iso_num
0 Afghanistan Asia 1952 28.801 8425333 779.445314 AFG 4
1 Afghanistan Asia 1957 30.332 9240934 820.853030 AFG 4
2 Afghanistan Asia 1962 31.997 10267083 853.100710 AFG 4
3 Afghanistan Asia 1967 34.020 11537966 836.197138 AFG 4
4 Afghanistan Asia 1972 36.088 13079460 739.981106 AFG 4
Если вы используете правильный подход, вы можете легко использовать px.line()
для построения фигуры на такой набор данных, и пусть функция фигуры позаботится о группировке для вас. И даже используйте ту же функцию, чтобы добавить данные к этой фигуре позже. Следующие цифры ниже построены с использованием комбинации px.line()
, go.Figure()
и add_traces
График 1: Фигура с использованием px.line()
Этот график показывает пять стран с высоким показателем валового внутреннего продукта c на душу населения на европейском континенте. Данные сгруппированы с использованием таких аргументов, как color='country'
.
График 2: Добавлены данные к тому же рисунку
Этот график добавляет к первому графику пять стран с самым высоким валовым продуктом c на душу населения на американском континенте. Это вызывает необходимость различения данных еще одним способом, позволяющим увидеть, являются ли данные европейскими или американскими. Это обрабатывается с использованием аргумента line_dash='country'
, поэтому все новые данные по сравнению с исходным графиком имеют пунктирные линии.
Tihs - это только один способ сделай это. Если конечный результат - то, что вы ищете, мы можем обсудить и другие подходы.
Полный код:
import plotly.graph_objs as go
import plotly.express as px
import pandas as pd
# Data
gapminder = px.data.gapminder()
# Most productive european countries (as of 2007)
df_eur = gapminder[gapminder['continent']=='Europe']
df_eur_2007 = df_eur[df_eur['year']==2007]
eur_gdp_top5=df_eur_2007.nlargest(5, 'gdpPercap')['country'].tolist()
df_eur_gdp_top5 = df_eur[df_eur['country'].isin(eur_gdp_top5)]
# Most productive countries on the american continent (as of 2007)
df_ame = gapminder[gapminder['continent']=='Americas']
df_ame_2007 = df_ame[df_ame['year']==2007]
df_ame_top5=df_ame_2007.nlargest(5, 'gdpPercap')['country'].tolist()
df_ame_gdp_top5 = df_ame[df_ame['country'].isin(df_ame_top5)]
# Plotly figure 1
fig = px.line(df_eur_gdp_top5, x='year', y='gdpPercap',
color="country",
line_group="country", hover_name="country")
fig.update_layout(title='Productivity, Europe' , showlegend=False)
# Plotly figure 2
fig2 = go.Figure(fig.add_traces(
data=px.line(df_ame_gdp_top5, x='year', y='gdpPercap',
color="country",
line_group="country", line_dash='country', hover_name="country")._data))
fig2.update_layout(title='Productivity, Europe and America', showlegend=False)
#fig.show()
fig2.show()