知識點(diǎn):
1 Python中的小括號()
代表tuple元祖數(shù)據(jù)類型饶氏,元祖是一種不可變序列。創(chuàng)建方法很簡單志膀,大多數(shù)時候都是小括號括起來的人灼。
代表list列表數(shù)據(jù)類型,列表是一種可變序列。創(chuàng)建方法既簡單又特別台腥。
代表dict字典數(shù)據(jù)類型宏赘,字典是Python中唯一內(nèi)建的映射類型。字典中的值沒有特殊的順序黎侈,但都是存儲在一個特定的鍵(key)下察署。鍵可以是數(shù)字、字符串甚至是元祖峻汉。
4 json文件的格式:
5 zip函數(shù):用于可迭代對象的列表的對應(yīng)
? append():用于列表數(shù)據(jù)的添加
6. 環(huán)境和要裝的庫說明:
本機(jī)是python3.6.5,需要的庫如下
import requests??
import json? ? ?#json庫
import jsonpath?#jsonpath庫,有點(diǎn)類似xpath,按節(jié)點(diǎn)提取數(shù)據(jù)
import pygal? #畫雷達(dá)圖的庫
完整代碼如下:
import requests
import json
import jsonpath
import pygal
#1請求數(shù)據(jù)
r = requests.get("http://pg.qq.com/zlkdatasys/data_zlk_zlzx.json")
#print(r.text)
#2把json數(shù)據(jù)轉(zhuǎn)成python數(shù)據(jù)
py_data = json.loads(r.text)
#print(py_data)
#獲取槍支數(shù)據(jù)列表
gun_name = jsonpath.jsonpath(py_data,"$..mc_94")[1:8]
#獲取性能數(shù)據(jù)的列表
gun_xinn = jsonpath.jsonpath(py_data,"$..ldtw_f2")[0:7]
#print(gun_name, gun_xinn)
data =[]
#枚舉列出gun_xinn列表的數(shù)據(jù)
for i in gun_xinn:
print(i) #打印枚舉訪問到的元素是個列表,列表中的元素是個字典{}
? #從gun_xinn列表中枚舉到子元素字典{},取到子元素字典的鍵的鍵值(默認(rèn)是字符串型),轉(zhuǎn)換成int型,然后構(gòu)造一個列表,添加到data列表中
? ? data.append([int(i[0]['wl_45']),int(i[0]['sc_54']),int(i[0]['ss_d0']),int(i[0]['wdx_a7']),int(i[0]['zds_62'])])
print(data)
#print(type(data[0][0]))
#4.雷達(dá)圖設(shè)計
#調(diào)用raser這個類,設(shè)置雷達(dá)圖
radar_chart = pygal.Radar()
#添加雷達(dá)圖標(biāo)題
radar_chart.title ="步槍性能"
#添加雷達(dá)圖各頂點(diǎn)含義
radar_chart.x_labels =["威力","射程","射速","穩(wěn)定性","子彈數(shù)"]
#用zip函數(shù)將可迭代對象gun_name,data中的元素名對應(yīng)好,返回列表
for n,din zip(gun_name,data):
print(n,d)
? ? #預(yù)處理好的列表添加到雷達(dá)圖中
? ? radar_chart.add(n,d)
#保存圖像
radar_chart.render_to_file("gun.svg")
在win7 64位 pycharm,python版本3.6.5,調(diào)試通過.知識點(diǎn)比較多.做的筆記.
核心代碼截圖: