我有这样的可视化:
我想将标记图标更改为足球图标,与线条颜色相同
我的代码是这样的:
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()
我不知道怎么做。
您可以通过创建 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()
我不认为
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()
输出
正如@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')
就像一个魅力:)