2 回答

TA贡献1843条经验 获得超7个赞
我想你可以用zip()它们来循环。
import matplotlib.pyplot as plt
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = ['hello', 'xyz', 'bbb', 'fasjd', 'boy']
fig = plt.figure(figsize=(4,3),dpi=144)
ax = fig.add_subplot(111)
def plotWords(words,z,y):
for w,xx,yy in zip(words,z,y):
ax.annotate(w, xy=(xx,yy))
ax.set_ylim(0,5)
plt.show()
return
plotWords(n,z,y)

TA贡献1793条经验 获得超6个赞
这个图
是运行这个脚本产生的
import matplotlib.pyplot as plt
import numpy as np
# determine the sequence of random numbers
np.random.seed(sum(ord(c) for c in 'gboffi'))
# initialize the plotting
fig, ax = plt.subplots(figsize=(8,6), constrained_layout=1)
# a list of long words
N = 40
data = '/usr/share/dict/italian'
long_words = [w.strip() for w in open(data) if len(w)>12 and "'" not in w]
words = np.random.choice(long_words, N)
# let's compute the word characteristics
xs = np.random.random(N) + [len(w) for w in words]
ys = np.random.random(N) + [sum(ord(c) for c in w)/len(w) for w in words]
# determine the axes limits
xmn = min(xs) ; xmx = max(xs) ; dx = xmx-xmn
ymn = min(ys) ; ymx = max(ys) ; dy = ymx-ymn
ax.set_xlim(xmn-0.05*dx, xmx+0.05*dx) ; ax.set_ylim(ymn-0.05*dy, ymx+0.05*dx)
# label the axes
plt.xlabel('Word Length', size='x-large')
plt.ylabel('Mean Value', size='x-large')
# for every word, plot a red "o" and place the text around it
for w, x, y in zip(words, xs, ys):
ax.plot((x,),(y,), 'o', c='r')
ax.annotate(w, (x, y), ha='center', va='center')
# the dashed red lines, the position is a little arbitrary
plt.hlines(ymn+0.5*dy, xmn, xmx, ls='--', color='r')
plt.vlines(xmn+0.4*dx, ymn, ymx, ls='--', color='r')
# remove everything except points, red lines and axes' labels
plt.box(False)
plt.tick_params(left=0, top=0, right=0, bottom=0,
labelleft=0, labeltop=0, labelright=0, labelbottom=0)
# we are done
plt.show()
添加回答
举报