[PYTHON] Visualisieren Sie das Zentrum der Rangkampfumgebung über die Pokemon Home-API

Was ist die Pokemon-Umgebung?

Der Begriff Umgebung, der in Pokemon-Schlachten verwendet wird, bezieht sich darauf, welche Art von Pokemon, Strategie und Konstruktion in der Rangschlacht von Pocket Monster Sword Shield verwendet werden. Man kann sagen, dass der wahre Nervenkitzel des Pokemon-Kampfes darin besteht, eine Struktur zu schaffen, die in der aktuellen Umgebung leicht zu gewinnen ist, indem man die Umgebung kennt und das Meta dafür berücksichtigt.

Das Zentrum der Umwelt

In Character Rank Maker, betrieben von Pokemon Soldier, einer Website zum Austausch von Pokemon-Kampfinformationen für Apts. Bewertungen von S bis E können persönlich festgelegt werden, und auf die Charakter-Ränge, die von berühmten Kommentatoren und Kommentatoren von Videos subjektiv bewertet werden, wird verwiesen.

Pokemon Soldier selbst veröffentlicht regelmäßig seinen Charakterrang. https://youtu.be/TMXQ497foRg

スクリーンショット 2020-11-24 172842.png

Der S-Rang dieses Charakter-Ranges wird im Video von Pokemon Soldier als "Zentrum der Umgebung" definiert. Andererseits dachte ich, dass das Problem darin bestand, dass die Bewertung des Umweltzentrums subjektiv war und dass eine quantitative Bewertungsmethode erforderlich war.

Ziel

Ziel ist es, "das Zentrum der Umwelt quantitativ zu bewerten". In diesem Artikel möchte ich das Zentrum der Umgebung anhand der Daten so weit wie möglich berücksichtigen.

Pokemon Home

Pokemon Home ist eine Pokemon-Verwaltungs-App, die auf Smartphones und Switch verwendet werden kann. Da die Anzahl der Pokémon, die in der Software gespeichert werden können, begrenzt ist, können Sie sie verwenden, indem Sie hier unnötige Pokémon vorübergehend speichern.

Darüber hinaus ist dieses Pokemon-Heim mit einer Austauschfunktion, Pokemon-Umgebungsinformationen in Ranglistenschlachten, Spieler-Ranglistenfunktion usw. ausgestattet und wird häufig für Umweltumfragen unter geeigneten Personen verwendet.

API Wie im Artikel hier vorgestellt, verwendet Pokemon Home direkt die in der App verwendete API, indem der User-Agent getarnt wird. Sie können JSON-Daten erhalten, indem Sie darauf klicken. Die folgende API wird diesmal verwendet. Bitte überprüfen Sie den Link für Details.

#Informieren Sie sich über die Saisonbedingungen
https://api.battle.pokemon-home.com/cbd/competition/rankmatch/list
#Erfassung von Kampfdaten für die jeweilige Saison / Laufzeit
https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pokemon
#Pokemon-Daten für die jeweilige Saison
https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pdetail-$j

Bewertungsmethode

Um die Umgebung in eine Form zu bringen, die visuell leicht zu verstehen und zu analysieren ist, werden wir diesmal eine Bewertung anhand von Diagrammen in Betracht ziehen. In Bezug auf die Grafik gibt es einen Artikel, den ich in der Vergangenheit geschrieben habe. Weitere Informationen finden Sie unter hier.

In diesem Artikel haben wir uns entschlossen, die hohe Rate der gleichzeitigen Einführung mit Pokemon zu bewerten, das die höchste Nutzungsrate aufweist. Dies liegt daran, dass ich dachte, dass der Fokus der Umgebung eher auf den Auswirkungen auf andere Pokémon und der Leichtigkeit liegen sollte, sie in die Gruppe zu integrieren, als auf der Leistung einer einzelnen Einheit. In Anbetracht der Top 10 Pokemon mit hoher gleichzeitiger Akzeptanzrate der Top 30 Pokemon Home-Nutzungsraten-Rankings werden wir die Beziehung mit einem ungerichteten Diagramm visualisieren.

Knoten und Kanten

In einem ungerichteten Diagramm müssen Sie Knoten und Kanten definieren.

Dieses Mal erstellen wir ein Diagramm mit Knoten als Pokemon und Kanten als Vorhandensein oder Nichtvorhandensein der höchsten gleichzeitigen Adoptionsrate.

Wenn wir beispielsweise 10 Tiere betrachten, die eine hohe gleichzeitige Adoptionsrate mit Aceburn aufweisen, werden wir 10 Kanten vom Aceburn-Knoten zu jedem Pokemon-Knoten erweitern.

図1.png

Dies wurde für die Top 30 Pokemon wiederholt und es wurde angenommen, dass das Pokemon, das über den Knoten mit der höchsten Ordnung herrscht, das Pokemon ist, das eine starke gegenseitige Beziehung zu dem Pokemon an der Spitze der Umgebung hat.

Datensammlung

Die erforderlichen Daten lauten wie folgt.

--Pokemon-Bilderbuch (Zuordnung von Bildbuchnummer und -name)

Pokemon Bilderbuch

Als ich nach einem Pokemon-Bilderbuch suchte, das mit 8 Generationen kompatibel ist, gab es eine Person, die es als JSON-Datei verteilte, also habe ich [hier] ausgeliehen (https://github.com/dayu282/pokemon-data.json). .. Da die Informationen zu Pokemon wie Ulaos Brizapos, die hinzugefügt wurden, nachdem die isolierte Insel der Rüstung noch nicht aktualisiert wurde, wenn Sie es in der neuesten Umgebung versuchen, ist das Ergebnis aufgrund des Pokemon, das nicht im Bilderbuch enthalten ist, etwas verrauscht.

> git clone https://github.com/dayu282/pokemon-data.json
import json

pokedex = {}
for i in range(8):
  #Pokemon für alle Generationen hinzugefügt
  j = i + 1
  with open("pokemon-data.json/en/gen" + str(j) + "-en.json", "r", encoding = "utf-8") as f:
    pokemons = json.loads(f.read())
    for pokemon in pokemons:
      pokedex[pokemon["no"]] = pokemon["name"]

ID-Informationen für die Saisonperiode

#Holen Sie sich alle Saisoninformationen und speichern Sie sie im JSON-Format
> curl https://api.battle.pokemon-home.com/cbd/competition/rankmatch/list \
  -H 'accept: application/json, text/javascript, */*; q=0.01' \
  -H 'countrycode: 304' \
  -H 'authorization: Bearer' \
  -H 'langcode: 1' \
  -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36' \
  -H 'content-type: application/json' \
  -d '{"soft":"Sw"}' \
  -o season.json
with open("season.json", "r", encoding = "utf-8") as f:
  data = json.load(f)["list"]

#Ordnen Sie nur die erforderlichen Informationen für jeden Begriff
terms = []
for season in data:
  for id in data[season]:
    terms.append({"id" : id, "season" : data[season][id]["season"], "rule" : data[season][id]["rule"], "rst" : data[season][id]["rst"], "ts1" : data[season][id]["ts1"], "ts2" : data[season][id]["ts2"]})

Informationen zur Kampfumgebung und zu Pokemon für die Saison und das Semester

Durch Einbetten von Variablen in den Befehl mit Jupyter wird dieser mithilfe einer Schleife erfasst. Pokemon-Informationen sind in 5 Teile unterteilt. Holen Sie sich also alle pdetail- {1 bis 5} und verketten Sie sie.

for term in terms:
  if term["rule"] == 0:
    #Erwerb der Kampfumgebung
    id = term["id"]
    rst = term["rst"]
    ts1 = term["ts1"]
    ts2 = term["ts2"]
    pokemons_file = str(id) + "-pokemons.json"
    !curl -XGET https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pokemon -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36'  -H 'accept: application/json' -o $pokemons_file
    for i in range(5):
      #Holen Sie sich Pokemon-Informationen für den Begriff
      j = i + 1
      pokeinfo_file = str(id) + "-pokeinfo-" + str(j) + ".json"
      !curl -XGET https://resource.pokemon-home.com/battledata/ranking/$id/$rst/$ts2/pdetail-$j -H 'user-agent: Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Mobile Safari/537.36'  -H 'accept: application/json' -o $pokeinfo_file
id = 10011 #Staffel 1 Einzelschlacht

#Top Pokemon Liste
with open(str(id) + "-pokemons.json", "r", encoding = "utf-8") as f: 
  top_pokemons = json.load(f)[:30]

#Pokemon Informationen
pokemons_info = {}
for i in range(5):
  j = i + 1
  with open(str(id) + "-pokeinfo-" + str(j) + ".json") as f:
    data = json.load(f)
    for index in data.keys():
      pokemons_info[index] = data[index]

Zeichnen von Diagrammen und Erstellen von Auftragsrankings

Nachdem wir die erforderlichen Daten haben, werden wir ein Diagramm zeichnen.

nodes = [] #Knotenliste
edges = [] #Kantenliste

#Betrachten Sie die Top 30
for pokemon in top_pokemons:
  #Füge das Pokémon dem Knoten hinzu
  nodes.append(pokedex[pokemon["id"]])
  #Pokemon hinzugefügt, um zusammen adoptiert zu werden
  with_poke_list = pokemons_info[str(pokemon["id"])][str(pokemon["form"])]["temoti"]["pokemon"]
  for with_poke in with_poke_list:
    nodes.append(pokedex[with_poke["id"]])
    if (pokedex[with_poke["id"]], pokedex[pokemon["id"]]) not in edges: #Vermeiden Sie Doppelarbeit auf Bestellung
      edges.append((pokedex[pokemon["id"]], pokedex[with_poke["id"]]))

nodes = list(set(nodes)) #Konvertieren Sie einmal in ein Set und machen Sie es einzigartig
import networkx as nx
import matplotlib.pyplot as plt
from matplotlib import font_manager

#Ungültige Diagrammerstellung
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)

#Berechnen Sie die durchschnittliche Reihenfolge des gesamten Netzwerks
average_deg = sum(d for n, d in G.degree()) / G.number_of_nodes()
#Die Größe muss proportional zum Grad des Knotens sein
sizes = [2500*deg/average_deg for node, deg in G.degree()]

plt.figure(figsize=(15, 15))
nx.draw(G, with_labels=True, node_color = "lightblue", node_size = sizes, edge_color = "black")
plt.axis('off')
plt.savefig(str(id) + '-graph.png')
plt.show()
#Sortieren Sie die Knoten in absteigender Reihenfolge
nodes_sorted_by_degree = sorted(G.degree(), key=lambda x: x[1], reverse=True)
print(nodes_sorted_by_degree)
 
#Ausgabe des Auftragsrankings
x, height = list(zip(*nodes_sorted_by_degree))
plt.figure(figsize=(15, 15))
plt.xlabel("Number of degrees")
plt.ylabel("Name of node")
plt.barh(x, height)
plt.savefig(str(id) + '-degs.png')
plt.show()

Ergebnis

Ich werde sie in der Reihenfolge von Staffel 1 zeigen. Es gibt Lärm, nachdem das Verbot der isolierten Rüstungsinsel aufgehoben wurde.

Staffel 1

Die Schwertschildumgebung wird geöffnet. In Bezug auf die Ordnung sind Mimikyu, Rotom, Drapart, Drews usw. überwiegend das Zentrum der Umwelt. Wenn Sie sich die Grafik ansehen, werden 9 Pokémon in der Mitte verfestigt und andere Pokémon werden so gezeichnet, dass sie sie umgeben. Sie können also davon ausgehen, dass 9 Pokémon in der Mitte der Umgebung den S-Rang haben.

10011-graph.png

10011-degs.png

Staffel 2

Die Umgebung beginnt sich zu verändern. Interessant ist die neue Linie, die sich vom Rand nähert. Nuruant, Brimond Saidon, Nuodehide usw. betreten die Umwelt.

10021-graph.png

10021-degs.png

Staffel 3

Kyodai Max Cavigon und Kyodai Max Laplace wurden enthüllt. Betreten Sie sofort die Umgebung. Zu diesem Zeitpunkt hat Laplace eine hohe Adoptionsrate, aber die gleichzeitige Adoptionsrate mit Pokemon, das sich an der Spitze der Umgebung befindet, ist nicht so hoch. In Anbetracht dieses Diagramms wird es tatsächlich als A oder B anstelle des S-Ranges bewertet.

10031-graph.png

10031-degs.png

Staffel 4

Einige neue Kyodai Max Pokemon wurden gehoben, aber es gibt nicht viel zu ändern. Cortus Lizardon betritt die Umgebung.

10041-graph.png

10041-degs.png

Staffel 5

Keine besondere Änderung.

10051-graph.png 10051-degs.png

Staffel 6

Natrey wird immer beliebter. Keine weiteren Änderungen.

10061-graph.png

10061-degs.png

Staffel 7

Aufhebung des Verbots isolierter Inseln in Rüstung. Mit der Aufhebung des Verbots der Traumeigenschaften von Aceburn Gorilander und der Aufhebung des Verbots von Kyodai Max werden wir uns sofort mit dem Zentrum der Umwelt befassen. Cavigon Armor Gaa beginnt sich aus dem Zentrum der Umgebung zu bewegen. Halten ist ein wenig beliebt.

10071-graph.png

10071-degs.png

Staffel 8

Pokemon Home aufgehoben. Pokemon mit einem Empfangsschleifentemperament wie Luft, Glück, Nutray und Dohideide betreten die Umgebung. Cavigon wird akzeptiert und ist nicht in der Umwelt. Im Zentrum der Umgebung, in der Polygon 2 tobt. Der Wert von Cabaldon für die Schaffung eines Ausgangspunkts steigt und Cabaldon wird zum Zentrum der Umwelt. Charizard-1 ist übrigens Ulaos, der ein Problem mit Bilderbüchern hat.

10081-graph.png

10081-degs.png

Staffel 9

Die Grenze im Zentrum der Umgebung beginnt klar zu werden. Galados und Drews gehen ein wenig runter. Die Empfangsschleife beginnt auch außerhalb der Umgebung zu erscheinen.

10091-graph.png

10091-degs.png

Staffel 10

Die Umgebung hat sich aufgrund der Regel, die hochrangige Pokémon verbietet, drastisch verändert. Ulaos, Patchragon, Lizardon, Natrey, Rotom und Achilleine stehen im Mittelpunkt der Umwelt. Cavigon und Iron kehren in die Umwelt zurück. Morobarrel Pixie kommt in die Umwelt.

10101-graph.png

10101-degs.png

Staffel 11

Genger steht im Zentrum der Umwelt. Keine weiteren Änderungen.

10111-graph.png

10111-degs.png

Staffel 12

Aufhebung des Verbots des Schneefeldes der Krone. Semi-Legenden wie Landros, Tekkaguya, Cap, Rehile, Thunder und Uturoid nehmen den größten Teil der Umwelt ein. Aus den Daten der 12. Staffel geht hervor, dass sich das Zentrum der aktuellen Umgebung um Mimikyu, Aceburn, Polygon 2, Gorilander, Tekkaguya, Caprehille, Landros, Thunder und Utsuroid befindet.

10121-graph.png 10121-degs.png

Schließlich

Ich habe den Charakterrang ab Staffel 12 wie folgt festgelegt, basierend auf der Reihenfolge. Bitte nehmen Sie Bezug darauf. Es mag voller Theorie sein, aber ich hoffe, es wird Ihnen als Index nützlich sein. Lass uns ein gutes Pokemon-Leben haben! 20201124 Season 12 Graph Environmental Rank.png

Nachtrag: Jemand hat etwas Ähnliches gemacht https://qiita.com/b_aka/items/9020e3237ff1a3e676e4

Recommended Posts

Visualisieren Sie das Zentrum der Rangkampfumgebung über die Pokemon Home-API
Wird ab der Einführung von Node.js in der WSL-Umgebung verwendet
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Visualisieren Sie die Anzahl der Beschwerden von Lebensversicherungsunternehmen
Ich analysierte die Rangkampfdaten des Pokemon-Schwertschilds und visualisierte sie auf Tableau
Visualisieren Sie die Flugbahn von Hayabusa 2
Verwenden Sie die Flickr-API von Python
Visualisieren Sie den Antwortstatus der Volkszählung 2020
Von der Einführung der GoogleCloudPlatform Natural Language API bis zur Verwendung
Ich habe versucht, die Vorhersage-API des maschinellen Lernmodells von WordPress aus aufzurufen
Zeigen Sie das Ergebnis der Videoanalyse mit der Cloud Video Intelligence API von Colaboratory an.
Pokemon x Data Science (3) - Denken Sie an die Partykonstruktion des Pokemon-Schwertschilds aus der Netzwerkanalyse. Wo befindet sich das Zentrum des Netzwerks?