本文目錄一覽:
「Python」使用Pyecharts生成疫情分布地圖
最近受江蘇疫情影響,好多小夥伴都居家辦公咯!為了密切關注疫情動態,最近寫了爬取疫情分布的腳本,參考上篇鏈接。
既然我們已經獲得了相應的江蘇各個地級市的疫情數據,那麼我們如何來使用Python實現將數據可視化在地圖上呢?
Apache Echarts 是一個由百度開源的數據可視化,憑藉著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用於數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了。
簡單來說,pyecharts具有以下特性:
3. Pyecharts 安裝
使用pip進行安裝如下:
因為我們需要使用pycharts繪製地圖,此時我們還需要安裝相應的地圖文件包:
其中:
echarts-countries-pypkg 包為全球國家地圖
echarts-china-provinces-pypkg包為中國省級地圖
echarts-china-cities-pypkg 包為中國市級地圖
安裝完上述繪製地圖相關的python包後,我們接下來開始畫疫情分布地圖。
首先,我們先來查看一段Pyecharts相關實現:
上述代碼解釋如下:
運行後會在當前目錄生成 map_jiangsu_0803.html,用瀏覽器打開後結果如下:
當滑鼠移動到對應區域後,會顯示出對應地級市今日新增人數。
上述腳本雖然可以實現我們的功能,但是顏色灰灰的,太過於單調,接下來我們來想辦法進行美化,實現代碼如下:
代碼解釋如下:
運行後會在當前目錄生成 map_jiangsu_0803_new.html,用瀏覽器打開後結果如下:
同理我們可以得到現有確診人數分布如下:
進而我們可以得到累計確診人數分布如下:
python中如何畫餅圖
餅形圖:
餅圖是圓形統計圖。
整個圖表的區域代表100%或全部數據。
餅圖中顯示的餅圖區域代表數據部分的百分比。
餅圖的各個部分稱為楔形。
楔形的弧長決定餅圖中楔形的面積。
楔形的面積決定了零件相對於整體的相對量子或百分比。
餅圖經常用於業務演示中,因為它們可以快速概述業務活動,例如銷售,運營等。
餅形圖還大量用於調查結果,新聞文章,資源使用圖(如磁碟和內存)中。
使用Python Matplotlib繪製簡單的餅圖
可以使用pyplot模塊中的函數pie()繪製餅圖。 以下python代碼示例使用pie()函數繪製了一個餅圖。
默認情況下,pyplot的pie()功能沿逆時針方向排列餅圖中的餅形或楔形。
如何用python繪製各種圖形
1.環境
系統:windows10
python版本:python3.6.1
使用的庫:matplotlib,numpy
2.numpy庫產生隨機數幾種方法
import numpy as np
numpy.random
rand(d0, d1, …, dn)
In [2]: x=np.random.rand(2,5)
In [3]: x
Out[3]:
array([[ 0.84286554, 0.50007593, 0.66500549, 0.97387807, 0.03993009],
[ 0.46391661, 0.50717355, 0.21527461, 0.92692517, 0.2567891 ]])
randn(d0, d1, …, dn)查詢結果為標準正態分布
In [4]: x=np.random.randn(2,5)
In [5]: x
Out[5]:
array([[-0.77195196, 0.26651203, -0.35045793, -0.0210377 , 0.89749635],
[-0.20229338, 1.44852833, -0.10858996, -1.65034606, -0.39793635]])
randint(low,high,size)
生成low到high之間(半開區間 [low, high)),size個數據
In [6]: x=np.random.randint(1,8,4)
In [7]: x
Out[7]: array([4, 4, 2, 7])
random_integers(low,high,size)
生成low到high之間(閉區間 [low, high)),size個數據
In [10]: x=np.random.random_integers(2,10,5)
In [11]: x
Out[11]: array([7, 4, 5, 4, 2])
3.散點圖
x x軸
y y軸
s 圓點面積
c 顏色
marker 圓點形狀
alpha 圓點透明度 #其他圖也類似這種配置
N=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)
x=np.random.randn(N)
y=np.random.randn(N)
plt.scatter(x,y,s=50,c=’r’,marker=’o’,alpha=0.5)
plt.show()
4.折線圖
x=np.linspace(-10000,10000,100) #將-10到10等區間分成100份
y=x**2+x**3+x**7
plt.plot(x,y)
plt.show()
折線圖使用plot函數
5.條形圖
N=5
y=[20,10,30,25,15]
y1=np.random.randint(10,50,5)
x=np.random.randint(10,1000,N)
index=np.arange(N)
plt.bar(left=index,height=y,color=’red’,width=0.3)
plt.bar(left=index+0.3,height=y1,color=’black’,width=0.3)
plt.show()
orientation設置橫向條形圖
N=5
y=[20,10,30,25,15]
y1=np.random.randint(10,50,5)
x=np.random.randint(10,1000,N)
index=np.arange(N)# plt.bar(left=index,height=y,color=’red’,width=0.3)# plt.bar(left=index+0.3,height=y1,color=’black’,width=0.3)#plt.barh() 加了h就是橫向的條形圖,不用設置orientation
plt.bar(left=0,bottom=index,width=y,color=’red’,height=0.5,orientation=’horizontal’)
plt.show()
6.直方圖
m1=100
sigma=20
x=m1+sigma*np.random.randn(2000)
plt.hist(x,bins=50,color=”green”,normed=True)
plt.show()
# #雙變數的直方圖# #顏色越深頻率越高# #研究雙變數的聯合分布
#雙變數的直方圖#顏色越深頻率越高#研究雙變數的聯合分布
x=np.random.rand(1000)+2
y=np.random.rand(1000)+3
plt.hist2d(x,y,bins=40)
plt.show()
7.餅狀圖
#設置x,y軸比例為1:1,從而達到一個正的圓
#labels標籤參數,x是對應的數據列表,autopct顯示每一個區域占的比例,explode突出顯示某一塊,shadow陰影
labes=[‘A’,’B’,’C’,’D’]
fracs=[15,30,45,10]
explode=[0,0.1,0.05,0]#設置x,y軸比例為1:1,從而達到一個正的圓
plt.axes(aspect=1)#labels標籤參數,x是對應的數據列表,autopct顯示每一個區域占的比例,explode突出顯示某一塊,shadow陰影
plt.pie(x=fracs,labels=labes,autopct=”%.0f%%”,explode=explode,shadow=True)
plt.show()
8.箱型圖
import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 點的形狀,whis虛線的長度plt.boxplot(data,sym=”o”,whis=1.5)plt.show()
#sym 點的形狀,whis虛線的長度
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241659.html