Facebook
From Cute Stork, 4 Years ago, written in Python.
This paste is a reply to RankVsDelta from P.Alizadeh - go back
Embed
Viewing differences between RankVsDelta and Re: RankVsDelta
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()