利用python进行吃鸡(绝地求生)可视化分析

本文通过Python代码展示了如何从PUBG游戏数据中提取并分析地图上的击杀和死亡位置,使用热力图可视化显示了热门战斗区域,如港口、军事基地和学校。同时,文章还探讨了LYB的潜在藏身之处。
摘要由CSDN通过智能技术生成

#这个代码,是通过展示地图击杀和死亡最多的地方,让我们可以挑选出有哪些好玩的地方 #加载模块 import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns from scipy.misc.pilutil import imread f = open(r'F:\spyder\kernel项目\pubg\PUBG_MatchData_Flattened.tsv')#添加路径 df = pd.read_csv(f,sep = '\t') #edf和mdf是两个地图,下面把两张地图分开进行处理 edf = df.loc[df['map_id'] == 'ERANGEL'] mdf = df.loc[df['map_id'] == 'MIRAMAR'] #print(edf.head()) def killer_victim_df_maker(df): #挑出地图中击杀和被杀玩家的坐标 df = edf victim_x_df = df.filter(regex = 'victim_position_x') victim_y_df = df.filter(regex = 'victim_position_y') killer_x_df = df.filter(regex = 'killer_position_x') killer_y_df = df.filter(regex = 'killer_position_y') #ravel()将多维矩阵变成一维 victim_x_s = pd.Series(victim_x_df.values.ravel('F')) victim_y_s = pd.Series(victim_y_df.values.ravel('F')) killer_x_s = pd.Series(killer_x_df.values.ravel('F')) killer_y_s = pd.Series(killer_y_df.values.ravel('F')) vdata = {'x':victim_x_s, 'y':victim_y_s} kdata = {'x':killer_x_s, 'y':killer_y_s} #dropna(how = 'any')删除带nan的行 #再留下坐标等于0(在边界上的异常数据)剔除 victim_df = pd.DataFrame(data = vdata).dropna(how = 'any') victim_df = victim_df[victim_df['x'] > 0] killer_df = pd.DataFrame(data = kdata).dropna(how = 'any') killer_df = killer_df[killer_df['x'] > 0] return killer_df, victim_df ekdf,evdf = killer_victim_df_maker(edf) mkdf,mvdf = killer_victim_df_maker(mdf) # print(ekdf.head())#在森林击杀的坐标数据 # print(evdf.head())#在森林被杀的坐标数据 # print(mkdf.head()) # print(mvdf.head()) # print(len(ekdf), len(evdf), len(mkdf), len(mvdf)) #将dataframe转换成numpy array plot_data_ev = evdf[['x','y']].values plot_data_ek = ekdf[['x','y']].values plot_data_mv = mvdf[['x','y']].values plot_data_mk = mkdf[['x','y']].values #将获得的坐标数据与地图上的坐标数据进行匹配 plot_data_ev = plot_data_ev * 4040 /800000 plot_data_ek = plot_data_ek * 4040 /800000 plot_data_mv = plot_data_mv * 976 /800000 plot_data_mk = plot_data_mk * 976 /800000 #加载模块 from scipy.ndimage.filters import gaussian_filter import matplotlib.cm as cm from matplotlib.colors import Normalize #热力图函数 def heatmap(x, y, s, bins = 100): # x = plot_data_ev[:,0] # y = plot_data_ev[:,1] # s = 1.5 # bins = 800 #np.histogram2d()将两列数值转为矩阵 heatmap, xedges, yedges = np.histogram2d(x, y, bins = bins) #高斯锐化模糊对象 heatmap = gaussian_filter(heatmap, sigma = s) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] return heatmap.T, extent #读取森林地图底图 #Normalize归一化 #np.clip(x,a,b)将x中小于a的值设为a,大于b的值设为b #cm.bwr 蓝白红 bg = imread('erangel.jpg') hmap, extent = heatmap(plot_data_ev[:,0], plot_data_ev[:,1], 1.5, bins =800) alphas = np.clip(Normalize(0, hmap.max()/100, clip=True)(hmap)*1.5,0.0,1.) colors = Normalize(hmap.max()/100, hmap.max()/20, clip=True)(hmap) colors = cm.bwr(colors) colors[..., -1] = alphas hmap2, extent2 = heatmap(plot_data_ek[:,0],plot_data_ek[:,1],1.5, bins = 800) alphas2 = np.clip(Normalize(0, hmap2.max()/100, clip = True)(hmap2)*1.5, 0.0, 1.) colors2 = Normalize(hmap2.max()/100, hmap2.max()/20, clip=True)(hmap2) colors2 = cm.RdBu(colors2) colors2[...,-1] = alphas2 #'森林死亡率图' fig, ax = plt.subplots(figsize = (24,24)) ax.set_xlim(0, 4096);ax.set_ylim(0, 4096) ax.imshow(bg) ax.imshow(colors, extent = extent, origin = 'lower', cmap = cm.bwr, alpha = 1) #ax.imshow(colors2, extent = extent2, origin = 'lower', cmap = cm.RdBu, alpha = 0.5) plt.gca().invert_yaxis() plt.title('森林地图死亡率图')

在这里插入图片描述

从图中可以看出来,港口,军事基地,p城,学校等这些红色的地方伤亡人数最大,而且很明显能看出下岛的两座桥上网率也很大,想来钢枪还是躲开人群都可以借鉴

#森林击杀图 fig, ax = plt.subplots(figsize = (24,24)) ax.set_xlim(0, 4096); ax.set_ylim(0, 4096) ax.imshow(bg) ax.imshow(colors2, extent = extent2, origin = 'lower', cmap = cm.RdBu, alpha = 1) plt.gca().invert_yaxis() plt.colorbar() plt.title('森林地图击杀率图')

在这里插入图片描述

这是森林击杀图,和森林死亡图基本重合,有人在的被击杀的地方就肯定有人击杀,不过要是仔细看的话,还有一点的差异,这便是LYB的藏身之地。

#沙漠地图 bg = imread('miramar.jpg') hmap, extent = heatmap(plot_data_mv[:,0], plot_data_mv[:,1], 1.5, bins = 800) alphas = np.clip(Normalize(0, hmap.max()/200, clip=True)(hmap2)*1.5, 0.0, 1.) colors2 = Normalize(hmap2.max()/100, hmap2.max()/20, clip=True)(hmap2) colors2 = cm.rainbow(colors2) colors2[..., -1] = alphas2 hmap2, extent2 = heatmap(plot_data_mv[:,0], plot_data_mv[:,1], 1.5, bins = 800) alphas2 = np.clip(Normalize(0, hmap2.max()/200, clip=True)(hmap2)*1.5, 0.0, 1.) colors = Normalize(hmap.max()/100, hmap.max()/20, clip=True)(hmap) colors = cm.rainbow(colors) colors[..., -1] = alphas a = colors2[...,-1] colors3 = colors2 colors3[...,-1] = np.clip(abs(colors2[...,-1]-colors[...,-1]),0.0,1.) np.mean(colors2[...,-1]-colors[...,-1])

#沙漠LYB图 fig, ax = plt.subplots(figsize = (24,24)) ax.set_xlim(0, 1000);ax.set_ylim(0, 1000) ax.imshow(bg) #ax.imshow(colors, extent = extent, origin = 'lower', cmap = cm.Blues, alpha = 0.5) ax.imshow(colors3, extent = extent2, origin = 'lower', cmap = cm.Reds, alpha = 0.5) plt.gca().invert_yaxis() plt.title('沙漠地图击杀率图') #通过对比击杀率和死亡率,寻找lyb藏身之地 #color3,击杀率大于死亡率的地方

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值