标签:plt python times 爬取 width assists scores backboards 图标
python爬取詹姆斯职业生涯数据并生成图标展示
从网页获取数据
使用plt生成柱状图
import requests
from fake_useragent import UserAgent
from lxml import html
import matplotlib.pyplot as plt
import numpy as np
def get_data():
url = 'http://www.stat-nba.com/player/1862.html'
response = requests.get(url, headers={'User-Agent': UserAgent().random})
etree = html.etree
e = etree.HTML(response.text)
scores = e.xpath('//table[@id="stat_box_avg"]//tr//td[24]/text()')
backboards = e.xpath('//table[@id="stat_box_avg"]//tr//td[16]/text()')
assists = e.xpath('//table[@id="stat_box_avg"]//tr//td[19]/text()')
times = e.xpath('//*[@id="stat_box_avg"]/tbody/tr/td[2]/a/text()')
del (scores[-1])
del (backboards[-1])
del (assists[-1])
for i in range(0, 17):
scores[i] = float(scores[i])
backboards[i] = float(backboards[i])
assists[i] = float(assists[i])
scores.reverse()
backboards.reverse()
scores.reverse()
assists.reverse()
times.reverse()
return scores, backboards, assists, times
def create_chart(scores, backboards, assists, times):
print(scores)
year = 17
total_width = 0.9
n = 3
width = total_width / n
x = np.arange(year)
x = x - (total_width - width) / 2
# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei', 'Times New Roman']
plt.bar(x, backboards, width=width, label="篮板")
plt.bar(x + width, assists, width=width, label="助攻")
plt.bar(x + 2 * width, scores, width=width, label="得分")
print(x + 2 * width)
print(scores)
print(type(x + 2 * width))
print(type(scores))
# 设置横坐标
plt.xticks(x + width, times, rotation=50)
# 显示图注
plt.legend()
# 设置标题
plt.title('勒布朗·詹姆斯所有赛季数据对比')
# 设置y轴区间
# plt.ylim(0, 35)
# 设置y轴文字
# plt.set_ylabel("数据")
# 显示图表
plt.show()
def main():
scores, backboards, assists, times = get_data()
create_chart(scores, backboards, assists, times)
if __name__ == '__main__':
main()
效果图
标签:plt,python,times,爬取,width,assists,scores,backboards,图标 来源: https://www.cnblogs.com/zq98/p/15028022.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。