Rumah > pembangunan bahagian belakang > Tutorial Python > Melukis carta visualisasi dinamik dengan Python adalah sangat keren!

Melukis carta visualisasi dinamik dengan Python adalah sangat keren!

WBOY
Lepaskan: 2023-05-24 12:01:06
ke hadapan
2392 orang telah melayarinya

用 Python 绘制动态可视化图表,太酷了!

Bercerita ialah kemahiran penting untuk saintis data. Untuk menyatakan idea kita dan memujuk orang lain, kita perlu berkomunikasi dengan berkesan. Dan visualisasi yang indah adalah alat yang hebat untuk tugas ini.

Artikel ini akan memperkenalkan 5 teknik visualisasi bukan tradisional yang boleh menjadikan cerita data anda lebih cantik dan berkesan. Pustaka grafik Plotly Python akan digunakan di sini, membolehkan anda menjana carta animasi dan carta interaktif dengan mudah.

Pasang modul

Jika anda belum memasang Plotly lagi, jalankan sahaja arahan berikut dalam terminal anda untuk melengkapkan pemasangan:

pip install plotly
Salin selepas log masuk

Graf dinamik visual

Apabila mengkaji evolusi penunjuk ini atau itu, kami sering melibatkan data masa. Alat animasi Plotly hanya memerlukan satu baris kod untuk membolehkan orang melihat perubahan dalam data dari semasa ke semasa, seperti yang ditunjukkan dalam rajah di bawah:

用 Python 绘制动态可视化图表,太酷了!

Kod adalah seperti berikut:

import plotly.express as px
from vega_datasets import data
df = data.disasters()
df = df[df.Year > 1990]
fig = px.bar(df,
 y="Entity",
 x="Deaths",
 animation_frame="Year",
 orientation='h',
 range_x=[0, df.Deaths.max()],
 color="Entity")
# improve aesthetics (size, grids etc.)
fig.update_layout(width=1000,
height=800,
xaxis_showgrid=False,
yaxis_showgrid=False,
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)',
title_text='Evolution of Natural Disasters',
showlegend=False)
fig.update_xaxes(title_text='Number of Deaths')
fig.update_yaxes(title_text='')
fig.show()
Salin selepas log masuk

Selagi Anda mempunyai pembolehubah masa untuk ditapis, maka hampir mana-mana carta boleh dianimasikan. Berikut ialah contoh membuat animasi carta serakan:

用 Python 绘制动态可视化图表,太酷了!

import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(
df,
x="gdpPercap",
y="lifeExp",
animation_frame="year",
size="pop",
color="continent",
hover_name="country",
log_x=True,
size_max=55,
range_x=[100, 100000],
range_y=[25, 90],
# color_continuous_scale=px.colors.sequential.Emrld
)
fig.update_layout(width=1000,
height=800,
xaxis_showgrid=False,
yaxis_showgrid=False,
paper_bgcolor='rgba(0,0,0,0)',
plot_bgcolor='rgba(0,0,0,0)')
Salin selepas log masuk

Carta Sunburst

Carta sunburst ialah cara yang baik untuk menggambarkan kumpulan melalui kaedah pernyataan. Jika anda ingin memecahkan kuantiti tertentu dengan satu atau lebih pembolehubah kategori, gunakan carta matahari.

Katakan kita ingin memecahkan data tip purata mengikut jantina dan masa dalam sehari ini kumpulan berganda ini boleh dipaparkan dengan lebih berkesan melalui visualisasi berbanding jadual.

用 Python 绘制动态可视化图表,太酷了!

Carta ini interaktif, membolehkan anda mengklik dan meneroka kategori sendiri. Anda hanya perlu mentakrifkan semua kategori anda, mengisytiharkan hierarki di antara mereka (lihat parameter ibu bapa dalam kod di bawah) dan menetapkan nilai yang sepadan, yang dalam kes kami adalah output kumpulan mengikut pernyataan.

import plotly.graph_objects as go
import plotly.express as px
import numpy as np
import pandas as pd
df = px.data.tips()
fig = go.Figure(go.Sunburst(
labels=["Female", "Male", "Dinner", "Lunch", 'Dinner ', 'Lunch '],
parents=["", "", "Female", "Female", 'Male', 'Male'],
values=np.append(
df.groupby('sex').tip.mean().values,
df.groupby(['sex', 'time']).tip.mean().values),
marker=dict(colors=px.colors.sequential.Emrld)),
layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',
 plot_bgcolor='rgba(0,0,0,0)'))
fig.update_layout(margin=dict(t=0, l=0, r=0, b=0),
title_text='Tipping Habbits Per Gender, Time and Day')
fig.show()
Salin selepas log masuk

Sekarang kami menambah satu lagi lapisan pada hierarki ini:

用 Python 绘制动态可视化图表,太酷了!

Untuk melakukan ini, kami menambah kumpulan lain dengan pernyataan yang melibatkan tiga nilai pembolehubah kategori.

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
import numpy as np
df = px.data.tips()
fig = go.Figure(go.Sunburst(labels=[
"Female", "Male", "Dinner", "Lunch", 'Dinner ', 'Lunch ', 'Fri', 'Sat',
'Sun', 'Thu', 'Fri ', 'Thu ', 'Fri', 'Sat', 'Sun', 'Fri ', 'Thu '
],
parents=[
"", "", "Female", "Female", 'Male', 'Male',
'Dinner', 'Dinner', 'Dinner', 'Dinner',
'Lunch', 'Lunch', 'Dinner ', 'Dinner ',
'Dinner ', 'Lunch ', 'Lunch '
],
values=np.append(
np.append(
df.groupby('sex').tip.mean().values,
df.groupby(['sex',
'time']).tip.mean().values,
),
df.groupby(['sex', 'time',
'day']).tip.mean().values),
marker=dict(colors=px.colors.sequential.Emrld)),
layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',
 plot_bgcolor='rgba(0,0,0,0)'))
fig.update_layout(margin=dict(t=0, l=0, r=0, b=0),
title_text='Tipping Habbits Per Gender, Time and Day')

fig.show()
Salin selepas log masuk

Carta Penunjuk

Carta Penunjuk hanyalah untuk rupa. Gunakan jenis carta ini apabila melaporkan metrik kejayaan seperti KPI dan menunjukkan sejauh mana ia hampir dengan matlamat anda.

用 Python 绘制动态可视化图表,太酷了!

import plotly.graph_objects as go
fig = go.Figure(go.Indicator(
domain = {'x': [0, 1], 'y': [0, 1]},
value = 4.3,
mode = "gauge+number+delta",
title = {'text': "Success Metric"},
delta = {'reference': 3.9},
gauge = {'bar': {'color': "lightgreen"},
'axis': {'range': [None, 5]},
 'steps' : [
 {'range': [0, 2.5], 'color': "lightgray"},
 {'range': [2.5, 4], 'color': "gray"}],
}))
fig.show()
Salin selepas log masuk

Plot Sankey

Cara lain untuk meneroka hubungan antara pembolehubah kategori ialah plot koordinat selari seperti di bawah. Anda boleh menyeret, menjatuhkan, menyerlahkan dan menyemak imbas nilai pada bila-bila masa, sesuai untuk pembentangan.

用 Python 绘制动态可视化图表,太酷了!

Kodnya adalah seperti berikut:

import plotly.express as px
from vega_datasets import data
import pandas as pd
df = data.movies()
df = df.dropna()
df['Genre_id'] = df.Major_Genre.factorize()[0]
fig = px.parallel_categories(
df,
dimensions=['MPAA_Rating', 'Creative_Type', 'Major_Genre'],
color="Genre_id",
color_continuous_scale=px.colors.sequential.Emrld,
)
fig.show()
Salin selepas log masuk

Plot Koordinat Selari

Plot Koordinat Selari ialah terbitan carta di atas. Di sini, setiap rentetan mewakili satu pemerhatian. Ini ialah kaedah yang boleh digunakan untuk mengenal pasti outlier (baris tunggal yang jauh daripada data yang lain), kelompok, arah aliran dan pembolehubah berlebihan (contohnya, jika dua pembolehubah mempunyai nilai yang sama pada setiap pemerhatian, mereka akan terletak pada garis mendatar yang sama , alat yang berguna untuk menunjukkan kehadiran lebihan).

用 Python 绘制动态可视化图表,太酷了!

Kodnya adalah seperti berikut:

import plotly.express as px
from vega_datasets import data
import pandas as pd
df = data.movies()
df = df.dropna()
df['Genre_id'] = df.Major_Genre.factorize()[0]
fig = px.parallel_coordinates(
df,
dimensions=[
'IMDB_Rating', 'IMDB_Votes', 'Production_Budget', 'Running_Time_min',
'US_Gross', 'Worldwide_Gross', 'US_DVD_Sales'
],
color='IMDB_Rating',
color_continuous_scale=px.colors.sequential.Emrld)
fig.show()
Salin selepas log masuk

Atas ialah kandungan terperinci Melukis carta visualisasi dinamik dengan Python adalah sangat keren!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan