广东中山网站建设 光龙,青海省高等级公路建设管局网站,硬件开发工具,软件开发公司简介范文大全今天我们在进行一个Python数据可视化的实战练习#xff0c;用到的模块叫做Panel#xff0c;我们通过调用此模块来绘制动态可交互的图表以及数据大屏的制作。
而本地需要用到的数据集#xff0c;可在kaggle上面获取 https://www.kaggle.com/datasets/rtatman/188-million-us…今天我们在进行一个Python数据可视化的实战练习用到的模块叫做Panel我们通过调用此模块来绘制动态可交互的图表以及数据大屏的制作。
而本地需要用到的数据集可在kaggle上面获取 https://www.kaggle.com/datasets/rtatman/188-million-us-wildfires如果无法访问kaggle,可以找我获取数据集。
导入模块和读取数据
那么首先我们先导入后面会用到的模块代码如下
# 数据库
import sqlite3
# 数据处理
import numpy as np
import pandas as pd
# 数据大屏
import holoviews as hv
import colorcet as cc
import panel as pn
from holoviews.element.tiles import EsriImagery
from datashader.utils import lnglat_to_meters
import hvplot.pandas
hv.extension(bokeh) 技术交流
技术要学会分享、交流不建议闭门造车。一个人走的很快、一堆人可以走的更远。
好的技术文章离不开粉丝的分享、推荐资料干货、资料分享、数据、ChatGPT 技术交流提升均可加交流群获取群友已超过2000人添加时最好的备注方式为来源兴趣方向方便找到志同道合的朋友。 方式①、添加微信号pythoner666备注来自CSDN 备注来意 方式②、微信搜索公众号Python学习与数据挖掘后台回复加群 那么这回的数据集的背景我们这里简单的做个介绍是涉及到1992年到2015年美国境内发生的森林火灾的分布情况那么这里就有涉及到火灾发生的位置也就是经纬度坐标由于数据集是放在sqlite数据库当中因此数据集的导入也会用到Python当中的sqlite3这个模块
# 连接数据库
conn sqlite3.connect(./FPA_FOD_20170508.sqlite)
# 读取出我们需要的字段下面的数据
df pd.read_sql_query(SELECT LATITUDE, LONGITUDE, STAT_CAUSE_DESCR, FIRE_SIZE, FIRE_SIZE_CLASS, DISCOVERY_DATE, CONT_DATE, STATE, FIRE_YEAR FROM fires, conn)
# 删除掉阿拉斯加等其他地方的数据
df df.loc[(df.loc[:,STATE]!AK) (df.loc[:,STATE]!HI) (df.loc[:,STATE]!PR)]
# 计算大火燃烧的时间
df[BURN_TIME] df[CONT_DATE] - df[DISCOVERY_DATE]
df.head() output
绘制地图
接下来我们来绘制一下全美各个地区发生火灾的次数将历年发生的火灾都做一个汇总代码如下
map_tiles EsriImagery().opts(alpha0.5, width700, height480, bgcolorblack)
plot df.hvplot( LONGITUDE, LATITUDE, geoTrue, kindpoints, rasterizeTrue, cmapcc.fire, cnormeq_hist, colorbarTrue).opts(colorbar_positionbottom, xlabel, ylabel)
map_tiles * plot output 那么涉及到绘制地图这里就需要依赖其他的模块了例如Shapely、Cartopy以及Pillow等模块安装起来会稍显复杂大家可以上网去查阅一下具体的步骤那么从上面的图表中我们可以看到加州以及佛罗里达州等地发生火灾的次数较多颜色也就比较深。
要是我们要是想要给图表添加一个时间轴通过拖拽时间轴来不断调整图表当中数据的变化就可以这么来做代码如下
# 绘制时间轴
year pn.widgets.IntSlider(nameYear Slider, width300, start1992, end2015, value(1993), step1,value_throttled(1993))
# 显示出选中的时间
def year_selected(year): return ### Wildfires Across the US in {}.format(year)
# 绘制地图
def plot_map(year_1): year_df df[df[FIRE_YEAR] year_1].copy() plot year_df.hvplot( LONGITUDE, LATITUDE, geoTrue, kindpoints, rasterizeTrue, cmapcc.fire, cnormeq_hist, colorbarTrue).opts(colorbar_positionbottom, xlabel, ylabel) return map_tiles * plot 我们将自定义的函数结合到一起来使用代码如下
dashboard pn.WidgetBox( pn.Column( pn.Row(pn.bind(year_selected, year), year), pn.Row(pn.bind(plot_map, year)), alignstart, sizing_modestretch_width))
dashboard output 绘制柱状图
接下来我们来绘制几张简单的柱状图首先是对不同的火灾等级进行分组统计并且绘制成柱状图代码如下
def plot_class(year): year_df df[df[FIRE_YEAR] year].copy() count_df pd.DataFrame(year_df.groupby(FIRE_SIZE_CLASS).size(), columns[Count]) count_df[Fire Class] count_df.index return count_df.hvplot.bar(xFire Class, yCount, cFire Class, cmapfire, legendFalse).opts(xlabelFire Size Class, ylabelNumber of Fires, title发生在{}的森林火灾根据不同级别来区分.format(year))
plot_class(2006) output 当然我们也可以绘制将柱状图绘制成是水平方向的例如我们想要探究一下不同原因造成的火灾的持续的时间有多长代码如下
def plot_cause_duration(year): year_df df[df[FIRE_YEAR] year].copy() caused_df pd.DataFrame(year_df.groupby(STAT_CAUSE_DESCR)[[BURN_TIME]].mean().sort_values(BURN_TIME)) caused_df[Cause] caused_df.index return caused_df.hvplot.barh(xCause, yBURN_TIME, cCause, cmapfire_r, legendFalse).opts( ylabelDuration (Days), title发生在{}年由不同原因造成的森林火灾.format(year))
plot_cause_duration(2010) output 以及我们想要看一下不同原因所造成的火灾的数量代码如下
def plot_cause_occur(year): year_df df[df[FIRE_YEAR] year].copy() caused_df pd.DataFrame(year_df.groupby(STAT_CAUSE_DESCR).size(), columns[Count]).sort_values(Count) caused_df[Cause] caused_df.index return caused_df.hvplot.barh(xCause, yCount, cCause, cmapfire_r, legendFalse).opts(ylabelOccurrence, title发生在{}年由不同原因造成的森林火灾.format(year))
plot_cause_occur(2010) output 可视化大屏的制作
最后我们将上面绘制出来的图标拼凑到一起做成可视化大屏代码如下
plots_box pn.WidgetBox(pn.Column(pn.Row(pn.bind(year_selected, year), year), pn.Row(pn.bind(plot_map, year), pn.bind(plot_class, year)) , pn.Row(pn.bind(plot_cause_occur, year), pn.bind(plot_cause_duration, year)), alignstart, width800, sizing_modestretch_width))
dashboard pn.Row(plots_box, sizing_modestretch_width)
dashboard output
文章转载自: http://www.morning.jpbky.cn.gov.cn.jpbky.cn http://www.morning.sgtq.cn.gov.cn.sgtq.cn http://www.morning.fjptn.cn.gov.cn.fjptn.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn http://www.morning.bxqtq.cn.gov.cn.bxqtq.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.myhpj.cn.gov.cn.myhpj.cn http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn http://www.morning.xdpjf.cn.gov.cn.xdpjf.cn http://www.morning.knpbr.cn.gov.cn.knpbr.cn http://www.morning.kqxwm.cn.gov.cn.kqxwm.cn http://www.morning.nxstj.cn.gov.cn.nxstj.cn http://www.morning.gjmll.cn.gov.cn.gjmll.cn http://www.morning.rntyn.cn.gov.cn.rntyn.cn http://www.morning.hxbps.cn.gov.cn.hxbps.cn http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.wjxtq.cn.gov.cn.wjxtq.cn http://www.morning.qtnmp.cn.gov.cn.qtnmp.cn http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.rkjb.cn.gov.cn.rkjb.cn http://www.morning.cmqrg.cn.gov.cn.cmqrg.cn http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn http://www.morning.mmzhuti.com.gov.cn.mmzhuti.com http://www.morning.mslsn.cn.gov.cn.mslsn.cn http://www.morning.fswml.cn.gov.cn.fswml.cn http://www.morning.hjlwt.cn.gov.cn.hjlwt.cn http://www.morning.hxpff.cn.gov.cn.hxpff.cn http://www.morning.tgqzp.cn.gov.cn.tgqzp.cn http://www.morning.hmsong.com.gov.cn.hmsong.com http://www.morning.wktbz.cn.gov.cn.wktbz.cn http://www.morning.qmzhy.cn.gov.cn.qmzhy.cn http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.tldfp.cn.gov.cn.tldfp.cn http://www.morning.tzzfy.cn.gov.cn.tzzfy.cn http://www.morning.lstmq.cn.gov.cn.lstmq.cn http://www.morning.xwzsq.cn.gov.cn.xwzsq.cn http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn http://www.morning.rdfq.cn.gov.cn.rdfq.cn http://www.morning.kklwz.cn.gov.cn.kklwz.cn http://www.morning.zcsch.cn.gov.cn.zcsch.cn http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn http://www.morning.pznhn.cn.gov.cn.pznhn.cn http://www.morning.psdsk.cn.gov.cn.psdsk.cn http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn http://www.morning.hbqhz.cn.gov.cn.hbqhz.cn http://www.morning.frxsl.cn.gov.cn.frxsl.cn http://www.morning.mxlwl.cn.gov.cn.mxlwl.cn http://www.morning.pswqx.cn.gov.cn.pswqx.cn http://www.morning.zdtfr.cn.gov.cn.zdtfr.cn http://www.morning.zryf.cn.gov.cn.zryf.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.rszwc.cn.gov.cn.rszwc.cn http://www.morning.clzly.cn.gov.cn.clzly.cn http://www.morning.cnlmp.cn.gov.cn.cnlmp.cn http://www.morning.xxwl1.com.gov.cn.xxwl1.com http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn http://www.morning.ckwxs.cn.gov.cn.ckwxs.cn http://www.morning.dqrhz.cn.gov.cn.dqrhz.cn http://www.morning.drmbh.cn.gov.cn.drmbh.cn http://www.morning.fqlxg.cn.gov.cn.fqlxg.cn http://www.morning.fslxc.cn.gov.cn.fslxc.cn http://www.morning.njqpg.cn.gov.cn.njqpg.cn http://www.morning.qztdz.cn.gov.cn.qztdz.cn http://www.morning.kfjnx.cn.gov.cn.kfjnx.cn http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.gfqj.cn.gov.cn.gfqj.cn http://www.morning.nmngg.cn.gov.cn.nmngg.cn http://www.morning.fnhxp.cn.gov.cn.fnhxp.cn http://www.morning.rhfbl.cn.gov.cn.rhfbl.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.qzpsk.cn.gov.cn.qzpsk.cn http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn http://www.morning.mksny.cn.gov.cn.mksny.cn http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn http://www.morning.ytmx.cn.gov.cn.ytmx.cn http://www.morning.mwns.cn.gov.cn.mwns.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.xesrd.com.gov.cn.xesrd.com