import requests import numpy as np import matplotlib.pyplot as plt cf = "http://codeforces.com/api/" def call(method, params): url = f"{cf}{method}" req = requests.get(url, params=params) if req.status_code == 200: return req.json() """ Some Contests' id: Good Bye 2019 : 1270 Edu 79 : 1279 Global 6 : 1266 Div3 #611 : 1283 Div2 #608 : 1271 Div1 #609 : 1268 Codefest 19 : 1208 """ rating = [[1200, "gray"], [1400, "green"], [1600, "#03a89e"], [1900, "blue"], [2100, "#aa00aa"], [2400, "orange"], [3000, "red"], [9999, "black"]] data = call("contest.ratingChanges", {"contestId": "1283"})["result"] title = data[0]["contestName"] print(title) delta = np.zeros((len(data),), dtype=np.int64) x = np.zeros((len(data),), dtype=np.int64) color = [] for i in range(len(data)): delta[i] = data[i]["newRating"] - data[i]["oldRating"] x[i] = data[i]["rank"] for j in range(len(rating)): if data[i]["oldRating"] < rating[j][0]: color.append(rating[j][1]) break plt.figure(figsize=(8, 6)) plt.title(title) plt.xlabel("Rank") plt.ylabel("Delta Rate") plt.yticks(np.arange(-300, 301, 50)) plt.ylim(-300, 300) plt.grid() plt.scatter(x, delta, s=0.5, c=color) plt.show()