本文目录导读:

我理解你可能想问关于Python代码中射门次数对比的可视化案例,但由于你没有提供具体的代码或图片,我需要先假设你想要的是足球比赛数据中双方射门次数的对比图表。
我为你提供一个完整的Python示例,使用Matplotlib和Pandas来对比两支球队的射门次数:
📊 完整的射门次数对比案例
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 准备数据(示例数据:两支球队的射门数据)
data = {
'球队': ['皇马', '巴萨', '曼城', '利物浦', '拜仁', '巴黎'],
'射门次数': [18, 22, 15, 20, 17, 19],
'射正次数': [8, 12, 6, 9, 7, 10],
'进球数': [3, 4, 2, 3, 2, 3]
}
df = pd.DataFrame(data)
# 设置中文字体(避免乱码)
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows
# plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # Mac
plt.rcParams['axes.unicode_minus'] = False
# 创建图形和子图
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
fig.suptitle('足球比赛射门数据分析', fontsize=16, fontweight='bold')
# 1. 水平条形图 - 总射门次数对比
ax1 = axes[0, 0]
bars1 = ax1.barh(df['球队'], df['射门次数'], color=['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7', '#DDA0DD'])
ax1.set_xlabel('射门次数')
ax1.set_title('总射门次数对比')
for i, (v, team) in enumerate(zip(df['射门次数'], df['球队'])):
ax1.text(v + 0.5, i, str(v), va='center', fontsize=10)
# 2. 分组柱状图 - 射门 vs 射正
ax2 = axes[0, 1]
x = np.arange(len(df['球队']))
width = 0.35
bars2a = ax2.bar(x - width/2, df['射门次数'], width, label='射门次数', color='#FF6B6B')
bars2b = ax2.bar(x + width/2, df['射正次数'], width, label='射正次数', color='#4ECDC4')
ax2.set_xticks(x)
ax2.set_xticklabels(df['球队'])
ax2.set_ylabel('次数')
ax2.set_title('射门次数 vs 射正次数')
ax2.legend()
ax2.grid(axis='y', alpha=0.3)
# 3. 堆叠柱状图 - 射门组成
ax3 = axes[1, 0]
bars3a = ax3.bar(df['球队'], df['射正次数'], label='射正次数', color='#45B7D1')
bars3b = ax3.bar(df['球队'], df['射门次数'] - df['射正次数'], bottom=df['射正次数'],
label='射偏次数', color='#FFEAA7')
ax3.set_ylabel('次数')
ax3.set_title('射门组成分析(射正+射偏)')
ax3.legend()
ax3.grid(axis='y', alpha=0.3)
# 4. 饼图 - 射门效率(射正率)
ax4 = axes[1, 1]
colors = plt.cm.Set3(np.linspace(0, 1, len(df)))
ax4.pie(df['射门次数'], labels=df['球队'], autopct='%1.1f%%',
startangle=90, colors=colors, explode=[0.05]*len(df))
ax4.set_title('各队射门占比')
# 调整布局
plt.tight_layout()
plt.show()
# 输出详细数据表格
print("\n📋 射门详细数据表:")
print(df.to_string(index=False))
📈 如果你想要单场比赛的两队对比
import matplotlib.pyplot as plt
# 单场比赛数据(2024-25欧冠决赛 皇马vs曼城)
teams = ['皇家马德里', '曼城']
shots = [15, 12] # 总射门
shots_on_target = [6, 4] # 射正
goals = [2, 1] # 进球
x = np.arange(len(teams))
width = 0.25
fig, ax = plt.subplots(figsize=(10, 6))
bars1 = ax.bar(x - width, shots, width, label='总射门', color='#FF6B6B')
bars2 = ax.bar(x, shots_on_target, width, label='射正', color='#4ECDC4')
bars3 = ax.bar(x + width, goals, width, label='进球', color='#FFD93D')
ax.set_ylabel('次数')
ax.set_title('单场比赛射门对比')
ax.set_xticks(x)
ax.set_xticklabels(teams)
ax.legend()
# 在柱子上添加数值
for bars in [bars1, bars2, bars3]:
for bar in bars:
height = bar.get_height()
ax.text(bar.get_x() + bar.get_width()/2., height + 0.2,
f'{int(height)}', ha='center', va='bottom')
plt.show()
🎯 核心代码说明
| 图表类型 | 用途 | 关键参数 |
|---|---|---|
| 水平条形图 | 直观对比多队总射门 | barh() |
| 分组柱状图 | 同队对比不同指标 | width 调整分组间隙 |
| 堆叠柱状图 | 展示射正/射偏构成 | bottom 参数实现堆叠 |
| 饼图 | 展示射门占比 | autopct 显示百分比 |
💡 使用提示
-
中文乱码:如遇中文乱码,安装中文字体或使用:
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] # Windows
-
数据来源:数据可以从CSV文件、API(如Football-Data.org)或手动输入。
-
个性化:可以修改颜色(
color参数)、添加网格线(grid())、调整图例位置等。
如果你有具体的代码或数据需要分析,请提供给我,我可以帮你调试或优化,你的问题中“显示被射门次数”是指对方球队的射门次数吗?如果是,稍作修改即可实现。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播