如何将 matplotlib 标记更改为足球图标?

问题描述 投票:0回答:3

我有这样的可视化:

enter image description here

我想将标记图标更改为足球图标与线条颜色相同

我的代码是这样的:

fig, ax = plt.subplots(figsize=(12,6))

ax.step(x = a_df['minute'], y = a_df['a_cum'], where = 'post', label= ateam, linewidth=2)
ax.step(x = h_df['minute'], y = h_df['h_cum'], where = 'post', color ='red', label= hteam,linewidth=2)  

plt.scatter(x= a_goal['minute'], y = a_goal['a_cum'] , marker = 'o')
plt.scatter(x= h_goal['minute'], y = h_goal['h_cum'] , marker = 'o',color = 'red')

plt.xticks([0,15,30,45,60,75,90])
plt.yticks([0, 0.5, 1, 1.5, 2, 2.5, 3])
plt.grid()

ax.title.set_text('The Expected Goals(xG) Chart Final Champions League 2010/2011')
plt.ylabel("Expected Goals (xG)")
plt.xlabel("Minutes")
ax.legend()
plt.show()

我不知道怎么做。

python matplotlib seaborn visualization google-maps-markers
3个回答
1
投票

您可以通过创建 matplotlib Path 对象来绘制自己的形状。 您需要 2 个列表来创建它。 1)形状的顶点(坐标) 2)代码:描述从一个顶点到下一个顶点的路径(MOVETO,LINETO,CURVE3,CURVE4,CLOSEPOLY,...)

例如

import matplotlib.pyplot as plt
from matplotlib.path import Path

vertices=[[ 1.86622681e+00, -9.69864442e+01], [-5.36324682e+01, -9.69864442e+01],
 [-9.86337733e+01, -5.19851396e+01], [-9.86337733e+01,  3.51356038e+00],
 [-9.86337733e+01,  5.90122504e+01], [-5.36324682e+01, 1.04013560e+02],
 [ 1.86622681e+00, 1.04013560e+02], [ 5.73649168e+01,  1.04013560e+02],
 [ 1.02366227e+02,  5.90122504e+01], [ 1.02366227e+02,  3.51356038e+00],
 [ 1.02366227e+02, -5.19851396e+01], [ 5.73649168e+01, -9.69864442e+01],
 [ 1.86622681e+00, -9.69864442e+01], [ 1.86622681e+00, -9.69864442e+01],
 [ 1.86622681e+00, -9.69864442e+01], [ 1.86622681e+00, -9.59864442e+01], 
 [ 1.49396568e+01, -9.59864442e+01], [ 2.74005268e+01, -9.34457032e+01],
 [ 3.88349768e+01, -8.88614442e+01], [ 3.93477668e+01, -8.39473616e+01],
 [ 3.91766768e+01, -7.84211406e+01], [ 3.83349768e+01, -7.24551946e+01],
 [ 2.54705168e+01, -7.17582316e+01], [ 1.38598668e+01, -6.91771276e+01],
 [ 3.49122681e+00, -6.47364446e+01], [-5.88483119e+00, -7.07454276e+01],
 [-1.85084882e+01, -7.43878696e+01], [-3.31337732e+01, -7.44239446e+01],
 [-3.31639232e+01, -8.07006846e+01], [-3.34889082e+01, -8.56747886e+01],
 [-3.41025232e+01, -8.92676942e+01], [-2.29485092e+01, -9.35925582e+01],
 [-1.08166852e+01, -9.59864442e+01], [ 1.86622681e+00, -9.59864442e+01],
 [ 1.86622681e+00, -9.59864442e+01], [ 1.86622681e+00, -9.59864442e+01],
 [ 3.98974768e+01, -8.84239444e+01], [ 6.30273268e+01, -7.88377716e+01],
 [ 8.17782368e+01, -6.07995616e+01], [ 9.22412268e+01, -3.81426946e+01],
 [ 8.94287268e+01, -3.42676946e+01], [ 8.27048568e+01, -3.89413496e+01],
 [ 7.41977468e+01, -4.19580876e+01], [ 6.55537268e+01, -4.39551946e+01],
 [ 6.55507268e+01, -4.39600946e+01], [ 6.55258268e+01, -4.39502946e+01],
 [ 6.55225268e+01, -4.39551946e+01], [ 5.64622368e+01, -5.74584576e+01],
 [ 4.77347768e+01, -6.68825886e+01], [ 3.93037768e+01, -7.22051946e+01],
 [ 4.01409768e+01, -7.80795846e+01], [ 4.03596968e+01, -8.35092576e+01],
 [ 3.98975268e+01, -8.84239444e+01], [ 3.98974768e+01, -8.84239444e+01],
 [ 3.98974768e+01, -8.84239444e+01], [-3.33525232e+01, -7.34239446e+01],
 [-3.33343532e+01, -7.34304446e+01], [-3.33081932e+01, -7.34174446e+01],
 [-3.32900232e+01, -7.34239446e+01], [-1.87512102e+01, -7.34136546e+01],
 [-6.26111319e+00, -6.98403626e+01], [ 2.95997681e+00, -6.39239446e+01],
 [ 4.88356681e+00, -5.29429786e+01], [ 6.50358681e+00, -4.13393356e+01],
 [ 7.80372681e+00, -2.91114446e+01], [-8.09469019e+00, -1.58596306e+01],
 [-1.93481942e+01, -5.40333762e+00], [-2.47587732e+01,  1.32605538e+00],
 [-3.69631432e+01, -2.50275662e+00], [-4.85465082e+01, -5.39578762e+00],
 [-5.95087732e+01, -7.36144462e+00], [-6.28171902e+01, -1.66250136e+01],
 [-6.52187002e+01, -2.98372096e+01], [-6.58837732e+01, -4.57989446e+01],
 [-5.53582062e+01, -6.01863506e+01], [-4.45266302e+01, -6.94131916e+01],
 [-3.33525232e+01, -7.34239446e+01], [-3.33525232e+01, -7.34239446e+01],
 [-3.33525232e+01, -7.34239446e+01], [-7.57587732e+01, -4.67676946e+01],
 [-7.29041812e+01, -4.67440446e+01], [-6.99334012e+01, -4.63526666e+01],
 [-6.68837732e+01, -4.56426946e+01], [-6.62087282e+01, -2.96768106e+01],
 [-6.37905682e+01, -1.64255576e+01], [-6.04462732e+01, -7.04894462e+00],
 [-6.81326882e+01,  3.32535038e+00], [-7.26804032e+01,  1.40097104e+01],
 [-7.40712732e+01,  2.50135604e+01], [-7.99916232e+01,  2.63222104e+01],
 [-8.66133452e+01,  2.67559804e+01], [-9.31650233e+01,  2.54510604e+01],
 [-9.31681733e+01,  2.54460604e+01], [-9.31931223e+01,  2.54560604e+01],
 [-9.31962733e+01,  2.54510604e+01], [-9.44043873e+01,  2.37123804e+01],
 [-9.54279373e+01,  2.17334704e+01], [-9.63212733e+01,  1.95448104e+01],
 [-9.71662733e+01,  1.43262704e+01], [-9.76337733e+01,  8.97093038e+00],
 [-9.76337733e+01,  3.51356038e+00], [-9.76337733e+01, -1.43647536e+01],
 [-9.29174773e+01, -3.11438126e+01], [-8.46650232e+01, -4.56426946e+01],
 [-8.18063532e+01, -4.64180796e+01], [-7.88476312e+01, -4.67932816e+01],
 [-7.57587732e+01, -4.67676946e+01], [-7.57587732e+01, -4.67676946e+01],
 [-7.57587732e+01, -4.67676946e+01], [ 6.55224768e+01, -4.28926946e+01],
 [ 7.40107668e+01, -4.09146326e+01], [ 8.23640768e+01, -3.79999686e+01],
 [ 8.88662268e+01, -3.34864446e+01], [ 9.61553068e+01, -1.55950616e+01],
 [ 9.94808868e+01, -1.66158462e+00], [ 9.88662268e+01,  8.32606038e+00],
 [ 9.42289868e+01,  2.15752904e+01], [ 8.77410868e+01,  3.15965604e+01],
 [ 8.11474768e+01,  3.82010604e+01], [ 7.17659368e+01,  3.38334104e+01],
 [ 6.38899668e+01,  3.03415204e+01], [ 5.74912268e+01,  2.77635604e+01],
 [ 5.68036568e+01,  1.50717604e+01], [ 5.35581368e+01, -9.16606169e-02],
 [ 4.82412268e+01, -1.60489446e+01], [ 5.52234668e+01, -2.62259056e+01],
 [ 6.09897268e+01, -3.51652306e+01], [ 6.55224768e+01, -4.28926946e+01],
 [ 6.55224768e+01, -4.28926946e+01], [ 6.55224768e+01, -4.28926946e+01],
 [ 8.42872681e+00, -2.83614446e+01], [ 2.13772368e+01, -2.57261866e+01],
 [ 3.43239568e+01, -2.15154036e+01], [ 4.72724768e+01, -1.57364446e+01],
 [ 5.25849968e+01,  2.07647383e-01], [ 5.58247068e+01,  1.53619304e+01],
 [ 5.64912268e+01,  2.79510604e+01], [ 5.64917568e+01,  2.79612604e+01],
 [ 5.64906868e+01,  2.79721604e+01], [ 5.64912268e+01,  2.79822604e+01],
 [ 4.74302668e+01,  3.88992704e+01], [ 3.74260968e+01,  4.79380604e+01],
 [ 2.64912268e+01,  5.51072604e+01], [ 1.05529568e+01,  5.24508804e+01],
 [-4.02431919e+00,  4.78459804e+01], [-1.52900232e+01,  4.18885104e+01],
 [-1.91554652e+01,  2.63828404e+01], [-2.20678242e+01,  1.30703504e+01],
 [-2.40400232e+01,  1.98226038e+00], [-1.87588732e+01, -4.60782062e+00],
 [-7.49875919e+00, -1.50853886e+01], [ 8.42872681e+00, -2.83614946e+01],
 [ 8.42872681e+00, -2.83614446e+01], [ 8.42872681e+00, -2.83614446e+01],
 [ 9.97724768e+01,  8.82606038e+00], [ 1.01209977e+02,  9.29481038e+00],
 [ 9.97891268e+01,  3.41125404e+01], [ 8.92576668e+01,  5.64775904e+01],
 [ 7.29287268e+01,  7.31385604e+01], [ 7.01162268e+01,  7.01073104e+01],
 [ 7.65398468e+01,  5.90945204e+01], [ 8.04306168e+01,  4.87012104e+01],
 [ 8.18037268e+01,  3.89510604e+01], [ 8.85060268e+01,  3.22487504e+01],
 [ 9.50869868e+01,  2.21436404e+01], [ 9.97724768e+01,  8.82606038e+00],
 [ 9.97724768e+01,  8.82606038e+00], [ 9.97724768e+01,  8.82606038e+00],
 [-7.39150232e+01,  2.60448104e+01], [-6.92374072e+01,  3.77382804e+01],
 [-6.07391432e+01,  4.81501604e+01], [-4.84150232e+01,  5.72948104e+01],
 [-4.77543102e+01,  6.78197404e+01], [-4.56607662e+01,  7.76814004e+01],
 [-4.11025232e+01,  8.57010604e+01], [-4.52341512e+01,  8.65620704e+01],
 [-4.97579362e+01,  8.64646604e+01], [-5.46650232e+01,  8.53885604e+01],
 [-7.24317802e+01,  7.30970204e+01], [-8.60276902e+01,  5.51787904e+01],
 [-9.28212733e+01,  3.42010604e+01], [-9.28243733e+01,  3.41920604e+01],
 [-9.28181733e+01,  3.41792604e+01], [-9.28212733e+01,  3.41698604e+01],
 [-9.30130013e+01,  3.14875704e+01], [-9.31144113e+01,  2.89274504e+01],
 [-9.31337733e+01,  2.64511104e+01], [-8.65119202e+01,  2.77331304e+01],
 [-7.98647022e+01,  2.73522904e+01], [-7.39150232e+01,  2.60448604e+01],
 [-7.39150232e+01,  2.60448104e+01], [-7.39150232e+01,  2.60448104e+01],
 [-1.56650232e+01,  4.27948104e+01], [-4.35766519e+00,  4.87636404e+01],
 [ 1.01466668e+01,  5.33700304e+01], [ 2.60224768e+01,  5.60448104e+01],
 [ 2.85590568e+01,  6.43435004e+01], [ 3.07827468e+01,  7.29492504e+01],
 [ 3.27099768e+01,  8.18573104e+01], [ 2.55039768e+01,  9.03537704e+01],
 [ 1.39714968e+01,  9.64983204e+01], [-1.13376819e+00,  9.85135604e+01],
 [-1.57753392e+01,  9.71825004e+01], [-2.87516412e+01,  9.28553404e+01],
 [-4.00712732e+01,  8.55448104e+01], [-4.46513912e+01,  7.76614604e+01],
 [-4.67507882e+01,  6.78133804e+01], [-4.74150232e+01,  5.72323104e+01],
 [-3.59060892e+01,  5.27285604e+01], [-2.53218622e+01,  4.79159104e+01],
 [-1.56650232e+01,  4.27948104e+01], [-1.56650232e+01,  4.27948104e+01],
 [ 6.94599768e+01,  7.08573104e+01], [ 7.22412268e+01,  7.38573104e+01],
 [ 5.42332468e+01,  9.18657304e+01], [ 2.93485768e+01,  1.03013560e+02],
 [ 1.86622681e+00,  1.03013560e+02], [ 1.03891181e+00,  1.03013560e+02],
 [ 2.19951808e-01,  1.03002360e+02], [-6.02518192e-01,  1.02982360e+02],
 [-1.00876819e+00,  9.94823604e+01], [ 1.43154268e+01,  9.74387404e+01],
 [ 2.60994568e+01,  9.12180804e+01], [ 3.34912268e+01,  8.24823604e+01],
 [ 4.89375568e+01,  8.17496704e+01], [ 6.09313968e+01,  7.78789204e+01],
 [ 6.94599768e+01,  7.08573604e+01], [ 6.94599768e+01,  7.08573104e+01],
 [ 6.94599768e+01,  7.08573104e+01]]
codes=[1,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,2,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,2,4,4,4,2,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,79,
1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,79,
1,2,4,4,4,4,4,4,2,4,4,4,4,4,4,2, 79]
print(Path.MOVETO,Path.LINETO,Path.CURVE3,Path.CURVE4,Path.CLOSEPOLY)
ball=Path(vertices,codes)
fig, ax = plt.subplots(figsize=(12,6))
plt.plot(15,1,color='b',marker=ball,markersize=30)
plt.xticks([0,15,30,45,60,75,90])
plt.yticks([0, 0.5, 1, 1.5, 2, 2.5, 3])
plt.grid()
ax.title.set_text('The Expected Goals(xG) Chart Final Champions League 2010/2011')
plt.ylabel("Expected Goals (xG)")
plt.xlabel("Minutes")
ax.legend()
plt.show()

输出


0
投票

我不认为

matplotlib
可以绘制自定义标记。因此,我建议的绘制方式是使用足球图像作为具有给定坐标的marker

import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox

def getImage(path):
   return OffsetImage(plt.imread(path), zoom=.02)
x_coords = [8.2, 4.5, 3.3, 6.9]
y_coords = [5.4, 3.5, 4.7, 7.1]
fig, ax = plt.subplots()
for x0, y0 in zip(x_coords, y_coords):
   ab = AnnotationBbox(getImage('football_icon.png'), (x0, y0), frameon=False)
   ax.add_artist(ab)
   
plt.xticks(range(10))
plt.yticks(range(10))
plt.show()

输出


0
投票

正如@tmdavison所说,

matplotlib
可以使用unicode字符,您只需要找到合适的字体即可。我使用“Segoe UI Symbol”(Yu Gothic & Segoe UI Emoji 也可以)和这样的代码:

ax.text(x = x,
        y = y, 
        s = u'\u26bd', 
        size = 20, 
        color = color, 
        fontfamily = 'Segoe UI Symbol')

就像一个魅力:)

© www.soinside.com 2019 - 2024. All rights reserved.