![898e4fdca8a0414bc67fa9dbcc3a624e.png](https://i-blog.csdnimg.cn/blog_migrate/9298a72e0eef515b26346b763331c0b1.jpeg)
大家好!
今天来分享一下如何用Python工具来帮助我们制作一张散点图展示科比·布莱恩特职业生涯全部进球位置,如下图所示。
![5e7e45ecd11c6cdba1fdff3e6135f7cb.png](https://i-blog.csdnimg.cn/blog_migrate/de42e7044468d04d9337fa7c5f5ea63d.jpeg)
案例中数据表格结构如下:
![e2fd6177a0d247594665df57538b6724.png](https://i-blog.csdnimg.cn/blog_migrate/74d16cb5e66c7529fdce459393415a5a.jpeg)
代码及演示:
import numpy as np
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType
df_Kobe = pd.read_csv("D:01会Excel的隔壁老王Excel报表20200516-科比职业生涯数据Kobe-data.csv")
df_Kobe
![0808da37308f4888898bfddd53bf767c.png](https://i-blog.csdnimg.cn/blog_migrate/67d1eb85e2c5b8f8028fabf18ba62d89.jpeg)
#选择"shot_made_flag"不为空的所有数据
df_Kobe_notnull = df_Kobe[ pd.notnull(df_Kobe["shot_made_flag"]) ]
df_Kobe_notnull
![4a7196075c042abd9dfe046c7c567adf.png](https://i-blog.csdnimg.cn/blog_migrate/d99eb9941af9b3aa909d15996e685431.jpeg)
#分别选择投进、投丢的数据
df_Kobe_notnull_shot_made_flag_1 = df_Kobe_notnull[ df_Kobe_notnull.shot_made_flag == 1]
df_Kobe_notnull_shot_made_flag_0 = df_Kobe_notnull[ df_Kobe_notnull.shot_made_flag == 0]
df_Kobe_notnull_shot_made_flag_1[["loc_x","loc_y","shot_made_flag"]].values.tolist()
![3cc660238586f50bdb1db526bf0fcf9a.png](https://i-blog.csdnimg.cn/blog_migrate/a3a740b6c6bcf6c92a293adbe01fb182.png)
c=(
Scatter(init_opts=opts.InitOpts(width="700px", height="1300px",bg_color="#ffffff"))
.add_xaxis(xaxis_data=df_Kobe_notnull_shot_made_flag_0["loc_x"].values.tolist())
.add_yaxis(
series_name="投偏",
y_axis=df_Kobe_notnull_shot_made_flag_0["loc_y"].values.tolist(),
symbol_size=3,
label_opts=opts.LabelOpts(is_show=0),
color="#542481",
)
.add_xaxis(xaxis_data=df_Kobe_notnull_shot_made_flag_1["loc_x"].values.tolist())
.add_yaxis(
series_name="投进",
y_axis=df_Kobe_notnull_shot_made_flag_1["loc_y"].values.tolist(),
symbol_size=2,
label_opts=opts.LabelOpts(is_show=0),
color="#FEDC56"
#color="#66ff99",
)
.set_series_opts()
.set_global_opts(
xaxis_opts=opts.AxisOpts(
type_="value", splitline_opts=opts.SplitLineOpts(is_show=0)
),
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=0),
splitline_opts=opts.SplitLineOpts(is_show=0),
),
tooltip_opts=opts.TooltipOpts(is_show=0),
title_opts=opts.TitleOpts(title="Python散点图展示科比职业生涯全部进球位置n (微信公众号:会Excel的隔壁老王)",pos_bottom = "15%", pos_right = "25%"),
legend_opts=opts.LegendOpts( pos_top = "85%"),
)
#.render("basic_scatter_chart.html")
)
c.render_notebook()
![5e7e45ecd11c6cdba1fdff3e6135f7cb.png](https://i-blog.csdnimg.cn/blog_migrate/de42e7044468d04d9337fa7c5f5ea63d.jpeg)
完整python代码参考:
import numpy as np
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType
df_Kobe = pd.read_csv("D:01会Excel的隔壁老王Excel报表20200516-科比职业生涯数据Kobe-data.csv")
#选择"shot_made_flag"不为空的所有数据,shot_made_flag=1位投进球,shot_made_flag=0为投丢的球
df_Kobe_notnull = df_Kobe[ pd.notnull(df_Kobe["shot_made_flag"]) ]
#分别选择投进、投丢的数据
df_Kobe_notnull_shot_made_flag_1 = df_Kobe_notnull[ df_Kobe_notnull.shot_made_flag == 1]
df_Kobe_notnull_shot_made_flag_0 = df_Kobe_notnull[ df_Kobe_notnull.shot_made_flag == 0]
#画图
c=(
Scatter(init_opts=opts.InitOpts(width="700px", height="1300px",bg_color="#ffffff"))
.add_xaxis(xaxis_data=df_Kobe_notnull_shot_made_flag_0["loc_x"].values.tolist())
.add_yaxis(
series_name="投偏",
y_axis=df_Kobe_notnull_shot_made_flag_0["loc_y"].values.tolist(),
symbol_size=3,
label_opts=opts.LabelOpts(is_show=0),
color="#542481",
)
.add_xaxis(xaxis_data=df_Kobe_notnull_shot_made_flag_1["loc_x"].values.tolist())
.add_yaxis(
series_name="投进",
y_axis=df_Kobe_notnull_shot_made_flag_1["loc_y"].values.tolist(),
symbol_size=2,
label_opts=opts.LabelOpts(is_show=0),
color="#FEDC56"
#color="#66ff99",
)
.set_series_opts()
.set_global_opts(
xaxis_opts=opts.AxisOpts(
type_="value", splitline_opts=opts.SplitLineOpts(is_show=0)
),
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=0),
splitline_opts=opts.SplitLineOpts(is_show=0),
),
tooltip_opts=opts.TooltipOpts(is_show=0),
title_opts=opts.TitleOpts(title="Python散点图展示科比职业生涯全部进球位置n (微信公众号:会Excel的隔壁老王)",pos_bottom = "15%", pos_right = "25%"),
legend_opts=opts.LegendOpts( pos_top = "85%"),
)
#.render("basic_scatter_chart.html")
)
c.render_notebook()