如何在 matplotlib 图例上指定某些标签

How to specify certain labels on matplotlib legend

我尝试制作以下情节,但图例看起来不太好。我希望年份是整数(不是小数)并且 space 在颜色栏中的 2000、2005、2010、2015、2020 等时期。此外,图例标题“年”应该位于图例顶部(不在中间颜色条中),带有 fontsize=14。希望有人能帮忙。

import pandas as pd
import random
import matplotlib.pyplot as plt
df=pd.read_csv(r"https://raw.githubusercontent.com/tuyenhavan/Course_Data/main/data.csv")
years=[i for i in range(2000,2022)]
df["Year"]=[random.choice(years) for i in range(len(df))]
fig, ax=plt.subplots(figsize=(15,8))
point=plt.scatter(df.Extent_km2/1000, df.Resolution_m, c=df.Year)
plt.xticks(fontsize=13) 
plt.yticks(fontsize=13)
ax.set_xlabel(r"Spatial extent (1000 $\rmkm^2$)", fontsize=15)
ax.set_ylabel("Spatial resolution (m)", fontsize=15) 
fig.colorbar(point)
plt.show()

要更改颜色栏刻度,您可以使用 cb=plt.colorbar(points,ticks=np.arange(2000,2025,5)) 设置自定义刻度。要将颜色栏的标题放在顶部,您可以使用:cb.ax.set_title('Years',fontsize=14)。 总体而言,代码如下所示:

import pandas as pd
import random
import matplotlib.pyplot as plt
import numpy as np

df=pd.read_csv(r"https://raw.githubusercontent.com/tuyenhavan/Course_Data/main/data.csv")
years=[i for i in range(2000,2022)]

df["Year"]=[random.choice(years) for i in range(len(df))]
fig, ax=plt.subplots(figsize=(15,8))
points=ax.scatter(df.Extent_km2/1000, df.Resolution_m, c=df.Year)

ax.tick_params(axis='both', which='major', labelsize=13)
ax.set_xlabel(r"Spatial extent (1000 $\rmkm^2$)", fontsize=15)
ax.set_ylabel("Spatial resolution (m)", fontsize=15) 

#setting up colorbar with customized ticks
cb=plt.colorbar(points,ticks=np.arange(2000,2025,5))

#setting up title
cb.ax.set_title('Years',fontsize=14)
plt.show()

并且输出给出: