最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python數(shù)據(jù)可視化制作全球地震散點圖

 更新時間:2022年08月10日 11:33:14   作者:從未止步..  
這篇文章主要介紹了Python數(shù)據(jù)可視化制作全球地震散點圖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

前言:

為了制作全球地震散點圖,我在網(wǎng)上下載了一個數(shù)據(jù)集,其中記錄了一個月內(nèi)全球發(fā)生的所有地震,但這些數(shù)據(jù)是以JSON格式存儲的,因此需要用json模塊來進行處理。

查看JSON數(shù)據(jù)

首先我們先打開下載好的數(shù)據(jù)集瀏覽一下:

你會發(fā)現(xiàn)其中的數(shù)據(jù)密密麻麻,根本不是人讀的,因此,接下來我們將對數(shù)據(jù)進行處理,讓它變得簡單易讀。

import json#導(dǎo)入json模塊,以便于加載文件中的數(shù)據(jù)
filename='eq_data_1_day_m1.json'
with open(filename) as f:
    all_eq_data=json.load(f)#json.load(),將數(shù)據(jù)轉(zhuǎn)化為Python能夠處理的格式
readable_file='eq_data_1_day_m1.json'#創(chuàng)建一個文件,以便將這些數(shù)據(jù)以易于閱讀的方式寫入其中
with open(readable_file,'w') as f:
    json.dump(all_eq_data,f,indent=4)#json.dump()將數(shù)據(jù)讀入其中
    #參數(shù)indent讓dump()使用與數(shù)據(jù)結(jié)構(gòu)匹配的縮進量來設(shè)置數(shù)據(jù)的格式

經(jīng)過處理之后,我們再打開這個文件會發(fā)現(xiàn)里面的數(shù)據(jù)變得清晰了許多。

從中我們能夠快速獲取數(shù)據(jù)的很多信息,比如地震的次數(shù),類型等等,不僅如此,我們還能夠知道有關(guān)這些數(shù)據(jù)的一些信息,比如,它的生成時間,他在網(wǎng)頁上怎么獲取等等。

參數(shù)indent

如果indent是非負(fù)整數(shù)或字符串,則JSON數(shù)組元素和對象成員將使用該縮進級別進行打印。如果indent為0,負(fù)數(shù)或“”只會插入換行符。
None(默認(rèn))則選擇最緊湊的表示形式。,使用正整數(shù)縮進會使每個級別縮進多個空格。,如果縮進是字符串(例如“
t”),則該字符串用于縮進每個級別。

當(dāng)我們將縮進量修改為0時,文件的排版也會發(fā)生變化:

json.dump(all_eq_data,f,indent=0)

創(chuàng)建地震列表

import json
filename='eq_data_1_day_m1.json'
with open(filename) as f:
    all_eq_data=json.load(f)#對文件進行處理
all_eq_dicts=all_eq_data['features']
print(len(all_eq_dicts))#提取出這個文件記錄的所有地震

輸出結(jié)果如下:

158

是的,從文件的開頭,我們就可以確定地震的次數(shù)為158次,因此輸出結(jié)果正確:

提取震級

方法即是新建立一個列表用來存放震源的有關(guān)數(shù)據(jù),再提取字典features的properties部分的mag.

代碼如下:

import json
filename='eq_data_1_day_m1.json'
with open(filename) as f:
    all_eq_data=json.load(f)
all_eq_dicts=all_eq_data['features']
mags=[]
for eq_dict in all_eq_dicts:
    mag=eq_dict['properties']['mag']
    mags.append(mag)
print(mags[:10])#打印前十次的震級數(shù)據(jù)

[0.96, 1.2, 4.3, 3.6, 2.1, 4, 1.06, 2.3, 4.9, 1.8]

提取位置數(shù)據(jù)

首先,我們需要在文件中找到關(guān)于經(jīng)度和維度的部分,如下所示,我們在文件中查找到,它是存在于geometry字典下,coordinates鍵中的。

---snip---
all_eq_dicts=all_eq_data['features']
mags,titles,lons,lats=[],[],[],[]
for eq_dict in all_eq_dicts:
    mag=eq_dict['properties']['mag']
    title=eq_dict['properties']['title']
    lon=eq_dict['geometry']['coordinates'][0]#提取coordinates鍵中索引值為0的數(shù)據(jù)
    lat=eq_dict['geometry']['coordinates'][1]
    mags.append(mag)
    titles.append(title)
    lons.append(lon)
    lats.append(lat)
print(mags[:10])
print(titles[:2])
print(lons[:5])#輸出前五個經(jīng)度
print(lats[:5])#輸出前五個維度

輸出結(jié)果如下:

[0.96, 1.2, 4.3, 3.6, 2.1, 4, 1.06, 2.3, 4.9, 1.8]
['M 1.0 - 8km NE of Aguanga, CA', 'M 1.2 - 11km NNE of North Nenana, Alaska']
[-116.7941667, -148.9865, -74.2343, -161.6801, -118.5316667]
[33.4863333, 64.6673, -12.1025, 54.2232, 35.3098333]

繪制震級散點圖

通過我們前面提取的有關(guān)震源的數(shù)據(jù),下面我們可對提取的數(shù)據(jù)進行可視化作圖:

import plotly.express as px#Plotly Express是Plotly的高級接口,相當(dāng)于Matplotlib是一個工具
fig=px.scatter(
    x=lons,
    y=lats,
    labels={'x':'經(jīng)度','y':'維度'},
    range_x=[-200,200],
    range_y=[-90,90],
    #width和height代表圖表的高度和寬度均為800像素
    width=800,
    height=800,
    title="全球地震散點圖",
)
fig.write_html('global_earthquakes.html')#將可視化圖保存為html文件
fig.show()

散點圖配置完成后,下面我們在程序目錄下尋找我們保存的可視化圖(global_earthquakes.html),再使用瀏覽器打開該html文件
如下所示,即為散點圖:

指定圖表數(shù)據(jù)的方式

上面我們繪制地震散點圖是通過手動配置經(jīng)緯度,通過將x,y和經(jīng)度,緯度建立聯(lián)系:

x=lons,
y=lats,
labels={'x':'經(jīng)度','y':'維度'},

但這在數(shù)據(jù)處理過程中并不是最簡單的方式,下面我們介紹另一種圖表指定數(shù)據(jù)的方式,需要結(jié)合我們上面所提到的pandas數(shù)據(jù)分析工具。

import pandas as pd#導(dǎo)入pandas模塊x
data=pd.DataFrame(data=zip(lons,lats,titles,mags),colums=['經(jīng)度','緯度','位置','震級'])#使用DataFrame將需要處理的數(shù)據(jù)封裝,注意:DataFrame后面的兩個參數(shù)是可選的,如果這兩個參數(shù)存在的話,這兩個參數(shù)的長度要和DataFrame的長度匹配
#zip()函數(shù)的作用:將可迭代的對象中的對應(yīng)元素打包為多個元祖,再返回由這些元祖組成的列表
data.head()

DataFrame()函數(shù)

它是Python中pandas庫中的一種數(shù)據(jù)結(jié)構(gòu),和excel比較相似,它不僅可以設(shè)置列名columns和行名index,而且它的單元格可以存放數(shù)值,字符串等。

data.head():返回數(shù)據(jù)的前幾行數(shù)據(jù),默認(rèn)是前五行,如果需要指定則寫data.head(‘指定的行數(shù)’)

data.tail():返回data的后幾行數(shù)據(jù),默認(rèn)為后五行,如果需要指定則寫data.tail(‘指定的行數(shù)’)

數(shù)據(jù)封裝好之后,參數(shù)的配置方式可修改為:

data,
x='經(jīng)度',
y='緯度',

現(xiàn)在我們通過這種參數(shù)配置方式進行地震散點圖的繪制:

#創(chuàng)建地震列表,提取數(shù)據(jù)
import json
filename='eq_data_1_day_m1.json'
with open(filename) as f:
    all_eq_data=json.load(f)
all_eq_dicts=all_eq_data['features']
mags,titles,lons,lats=[],[],[],[]
for eq_dict in all_eq_dicts:
    mag=eq_dict['properties']['mag']
    title=eq_dict['properties']['title']
    lon=eq_dict['geometry']['coordinates'][0]#提取coordinates鍵中索引值為0的數(shù)據(jù)
    lat=eq_dict['geometry']['coordinates'][1]
    mags.append(mag)
    titles.append(title)
    lons.append(lon)
    lats.append(lat)
 #參數(shù)配置設(shè)置
import pandas as pd   
data=pd.DataFrame(
    data=zip(lons,lats,titles,mags),columns=['經(jīng)度','緯度','位置','震級']
)
data.head()
#繪制散點圖
import plotly.express as px
fig = px.scatter(
    data,
    x='經(jīng)度',
    y='緯度',
    range_x=[-200, 200],
    range_y=[-90, 90],
    width=800,
    height=800,
    title="全球地震散點圖",
)
fig.write_html('global_earthquake.html')
fig.show()

配置完成后,下面我們在程序目錄下尋找我們保存的可視化圖(global_earthquakes.html),再使用瀏覽器打開該html文件如下圖所示:

通過輸出結(jié)果,我們可得出,無論使用那種參數(shù)配置方式,其輸出結(jié)果都是相同的,但第二種這種以鍵值對的方式,更加清晰。

設(shè)計標(biāo)記點的尺寸

和我們上篇文章提到的與溫度有關(guān)的散點圖相類似,我們希望知道最高溫度和最低溫度等這些特殊且重要的信息,那么震源散點圖也是如此,上圖我們所設(shè)計的震源散點圖只是將緯度和經(jīng)度在圖上呈現(xiàn)出來了,但震源并沒有體現(xiàn)。

下面,我們將震級也呈現(xiàn)在散點圖上:

方法:使用size參數(shù)設(shè)計散點圖中每個尺寸的大?。?/p>

size='震級',
size_max=10,

對比上面的兩幅圖,我們會發(fā)現(xiàn)散點圖中關(guān)于地震的信息還增加了震級,不僅如此,散點的尺寸大小也與震級的大小有關(guān),震級越大,散點的尺寸越大,這樣一來,我們很容易觀察到不同地方的地震強度,但這還不夠直觀,為了能夠更加直白的呈現(xiàn)地震的情況,我們還設(shè)計散點的顏色以便更加清晰的顯示。

設(shè)計標(biāo)記的顏色

方法:

color='震級',   #默認(rèn)漸變色的范圍是從藍到紅再到黃,數(shù)值越小標(biāo)記越藍,而數(shù)值越大則標(biāo)記越黃。

把在網(wǎng)上下載好的近30天的數(shù)據(jù)文件復(fù)制到該程序目錄下,將參數(shù)color添加其中,再繪制散點圖。,注意修改文件名。

如下圖所示:

美化后的散點圖,不僅在顏色上漂亮了許多,漸變的顏色也更加清晰的反映了地震的嚴(yán)重程度。

獲取Plotly Express中所有的漸變色:

不僅如此,Plotly Express還為我們提供了許多的漸變色,而這些漸變色是在px.colors.named_colorscales()中定義的,下面來獲取這些漸變色:

import plotly.express as px
for key in px.colors.named_colorscales():
    print(key,end='/')

輸出結(jié)果如下:

aggrnyl/agsunset/blackbody/bluered/blues/blugrn/bluyl/brwnyl/bugn/bupu/burg/burgyl/cividis
/darkmint/electric/emrld/gnbu/greens/greys/hot/inferno/jet/magenta/magma/mint/orrd/oranges
/oryel/peach/pinkyl/plasma/plotly3/pubu/pubugn/purd/purp/purples/purpor/rainbow/rdbu/rdpu
/redor/reds/sunset/sunsetdark/teal/tealgrn/turbo/viridis/ylgn/ylgnbu/ylorbr/ylorrd/algae
/amp/deep/dense/gray/haline/ice/matter/solar/speed/tempo/thermal/turbid/armyrose/brbg/earth
/fall/geyser/prgn/piyg/picnic/portland/puor/rdgy/rdylbu/rdylgn/spectral/tealrose/temps/tropic
/balance/curl/delta/oxy/edge/hsv/icefire/phase/twilight/mrybm/mygbm/

此外,我們還可將對應(yīng)配色列表進行反轉(zhuǎn):

方法:

px.colors.diverging.RdYlGn[::-1]

此外,Plotly除了有px.colors.diverging表示連續(xù)的配色方案,還有px.colors.sequential和px.colors.qualitative表示離散變量。每個漸變色都有起始色和終止色,有些漸變色還定義了一個或多個中間色。

添加鼠標(biāo)指向時顯示的文本:

方法,使用參數(shù)hover_name,參數(shù)配置為data的‘位置’

hover_name='位置',

修改后,散點圖的輸出如下所示:

我們發(fā)現(xiàn),對比于前面的圖表,此時又增加了位置信息,此時,我們就完整的繪制了一副關(guān)于地震信息的散點圖。

到此這篇關(guān)于Python數(shù)據(jù)可視化制作全球地震散點圖的文章就介紹到這了,更多相關(guān)Python地震散點圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實現(xiàn)挑選出來100以內(nèi)的質(zhì)數(shù)

    python實現(xiàn)挑選出來100以內(nèi)的質(zhì)數(shù)

    這篇文章主要介紹了python實現(xiàn)挑選出來100以內(nèi)的質(zhì)數(shù),由于是新手,思路有限,如有問題,還請大家指正,需要的朋友可以參考下
    2015-03-03
  • 把項目從Python2.x移植到Python3.x的經(jīng)驗總結(jié)

    把項目從Python2.x移植到Python3.x的經(jīng)驗總結(jié)

    這篇文章主要介紹了把項目從Python2.x移植到Python3.x的經(jīng)驗總結(jié),包括作者所使用的Jinja2框架中一些需要注意的地方,需要的朋友可以參考下
    2015-04-04
  • 解決Python報錯:ValueError:operands?could?not?be?broadcast?together?with?shapes

    解決Python報錯:ValueError:operands?could?not?be?broadcast?t

    這篇文章主要給大家介紹了關(guān)于解決Python報錯:ValueError:operands?could?not?be?broadcast?together?with?shapes的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python程序編譯與反編譯問題

    Python程序編譯與反編譯問題

    這篇文章主要介紹了Python程序編譯與反編譯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python快速編寫單行注釋多行注釋的方法

    python快速編寫單行注釋多行注釋的方法

    在本篇文章里小編給大家整理的是關(guān)于python快速編寫單行注釋多行注釋的方法,有此需要的朋友們可以參考學(xué)習(xí)下。
    2019-07-07
  • 使用AJAX和Django獲取數(shù)據(jù)的方法實例

    使用AJAX和Django獲取數(shù)據(jù)的方法實例

    這篇文章主要給大家介紹了關(guān)于使用AJAX和Django獲取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python實現(xiàn)樸素貝葉斯分類器的方法詳解

    Python實現(xiàn)樸素貝葉斯分類器的方法詳解

    這篇文章主要介紹了Python實現(xiàn)樸素貝葉斯分類器的方法,詳細分析了樸素貝葉斯分類器的概念、原理、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-07-07
  • Python程序慢的重要原因

    Python程序慢的重要原因

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于Python程序慢的重要原因分析內(nèi)容,有興趣的朋友們可以參考下。
    2020-09-09
  • Python利用臨時文件實現(xiàn)數(shù)據(jù)的保存

    Python利用臨時文件實現(xiàn)數(shù)據(jù)的保存

    tempfile模塊專門用于創(chuàng)建臨時文件和臨時目錄,它既可以在?UNIX?平臺上運行良好,也可以在?Windows?平臺上運行良好。本文將利用tempfile模塊創(chuàng)建臨時文件來保存數(shù)據(jù),感興趣的可以了解一下
    2022-07-07
  • 關(guān)于PyTorch源碼解讀之torchvision.models

    關(guān)于PyTorch源碼解讀之torchvision.models

    今天小編就為大家分享一篇關(guān)于PyTorch源碼解讀之torchvision.models,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

炉霍县| 新野县| 西宁市| 白朗县| 扶绥县| 名山县| 靖州| 克东县| 屏东县| 喀喇| 大理市| 连云港市| 马边| 兰州市| 南靖县| 双江| 噶尔县| 湄潭县| 璧山县| 贡觉县| 嘉禾县| 大余县| 昌乐县| 三亚市| 大足县| 闽侯县| 武陟县| 出国| 泊头市| 衡南县| 阳曲县| 鄂尔多斯市| 岗巴县| 台北市| 米林县| 昌吉市| 务川| 静乐县| 安平县| 库尔勒市| 盐城市|