Python Plot A Graph From Values Inside Dictionary
I have a dictionary that looks like this: test = {1092268: [81, 90], 524292: [80, 80], 892456: [88, 88]} Now I want to make a simple plot from this dictionary that looks like: tes
Solution 1:
Use matplotlib for plotting data
Transform the data into lists of numbers (array-like) and use scatter()
+ annotate()
from matplotlib.pyplot
.
%matplotlib inlineimport random
import sys
import array
import matplotlib.pyplot as plt
test = {1092268: [81, 90], 524292: [80, 80], 892456: [88, 88]}
# repackage data into array-like for matplotlib
# (see a preferred pythonic way below)
data = {"x":[], "y":[], "label":[]}
for label, coord in test.items():
data["x"].append(coord[0])
data["y"].append(coord[1])
data["label"].append(label)
# display scatter plot data
plt.figure(figsize=(10,8))
plt.title('Scatter Plot', fontsize=20)
plt.xlabel('x', fontsize=15)
plt.ylabel('y', fontsize=15)
plt.scatter(data["x"], data["y"], marker = 'o')
# add labels
for label, x, y in zip(data["label"], data["x"], data["y"]):
plt.annotate(label, xy = (x, y))
The plot can be made prettier by reading the docs and adding more configuration.
Update
Incorporate suggestion from @daveydave400's answer.
# repackage data into array-like for matplotlib, pythonically
xs,ys = zip(*test.values())
labels = test.keys()
# display
plt.figure(figsize=(10,8))
plt.title('Scatter Plot', fontsize=20)
plt.xlabel('x', fontsize=15)
plt.ylabel('y', fontsize=15)
plt.scatter(xs, ys, marker = 'o')
for label, x, y inzip(labels, xs, ys):
plt.annotate(label, xy = (x, y))
Solution 2:
This works in both python 2 and 3:
x, y = zip(*test.values())
Once you have these you can pass them to a plotting library like matplotlib.
Solution 3:
def plot(label, x, y):
...
for (key, coordinates) in test.items():
plot(key, coordinates[0], coordinates[1])
Post a Comment for "Python Plot A Graph From Values Inside Dictionary"