MatPlotLib Scatter 内部函数不起作用
MatPlotLib Scatter not working Inside Function
我是 Python 的初学者。我一直在尝试使用 MatPlotLib 来比较 FIFA 20 中足球运动员的统计数据。基本上我面临的问题是:
def make_graph(value1, value2, namevalue, label1, label2):
print(value1, value2, namevalue)
plt.scatter(value1, value2)
plt.xlabel(label1)
plt.ylabel(label2)
for i in range(len(namevalue)):
plt.text(value1[i] + 0.3, value2[i] + 0.3, namevalue[i], fontdict=dict(color='red', size=10), bbox=dict(facecolor = 'yellow', alpha=0.5))
plt.xlim(min(value1) - 5, max(value2) + 5)
plt.ylim(min(value1) - 5, max(value2) + 5)
plt.show()
def Test():
df = xlrd.open_workbook(path)
data = df.sheet_by_index(0)
data.cell_value(0,0)
name = []
pace = []
shoot = []
for i in range(1, 450):
#print(data.cell_value(i, 3))
buff = str(data.cell_value(i,2)).strip()
if buff == "LM" or buff == "RM":
pacebuffer = int(data.cell_value(i, 4))
shootbuffer = int(data.cell_value(i, 5))
if pacebuffer >= 90:
name.append(data.cell_value(i, 3).strip("\n"))
pace.append(pacebuffer)
shoot.append(shootbuffer)
#print(name)
make_graph(pace, shoot, name, "Pace", "Shoot")
特定代码向我展示了一个空图。
但是
当我在 Test()
中编写与在 make_graph()
中编写的相同代码时,它会为我提供所需的输出。
但是这样一来,每次我写一些其他函数时,我都必须重写那个绘图的东西,这确实是一个问题。知道如何解决这个问题吗?
这是你的 x 和 y 限制:
plt.xlim(min(value1) - 5, max(value2) + 5)
plt.ylim(min(value1) - 5, max(value2) + 5)
你应该改为:
plt.xlim(min(value1) - 5, max(value1) + 5)
plt.ylim(min(value2) - 5, max(value2) + 5)
从技术上讲,您的 plt.scatter 工作正常,但您的 x 和 y 限制意味着您看不到。
我是 Python 的初学者。我一直在尝试使用 MatPlotLib 来比较 FIFA 20 中足球运动员的统计数据。基本上我面临的问题是:
def make_graph(value1, value2, namevalue, label1, label2):
print(value1, value2, namevalue)
plt.scatter(value1, value2)
plt.xlabel(label1)
plt.ylabel(label2)
for i in range(len(namevalue)):
plt.text(value1[i] + 0.3, value2[i] + 0.3, namevalue[i], fontdict=dict(color='red', size=10), bbox=dict(facecolor = 'yellow', alpha=0.5))
plt.xlim(min(value1) - 5, max(value2) + 5)
plt.ylim(min(value1) - 5, max(value2) + 5)
plt.show()
def Test():
df = xlrd.open_workbook(path)
data = df.sheet_by_index(0)
data.cell_value(0,0)
name = []
pace = []
shoot = []
for i in range(1, 450):
#print(data.cell_value(i, 3))
buff = str(data.cell_value(i,2)).strip()
if buff == "LM" or buff == "RM":
pacebuffer = int(data.cell_value(i, 4))
shootbuffer = int(data.cell_value(i, 5))
if pacebuffer >= 90:
name.append(data.cell_value(i, 3).strip("\n"))
pace.append(pacebuffer)
shoot.append(shootbuffer)
#print(name)
make_graph(pace, shoot, name, "Pace", "Shoot")
特定代码向我展示了一个空图。
但是
当我在 Test()
中编写与在 make_graph()
中编写的相同代码时,它会为我提供所需的输出。
但是这样一来,每次我写一些其他函数时,我都必须重写那个绘图的东西,这确实是一个问题。知道如何解决这个问题吗?
这是你的 x 和 y 限制:
plt.xlim(min(value1) - 5, max(value2) + 5)
plt.ylim(min(value1) - 5, max(value2) + 5)
你应该改为:
plt.xlim(min(value1) - 5, max(value1) + 5)
plt.ylim(min(value2) - 5, max(value2) + 5)
从技术上讲,您的 plt.scatter 工作正常,但您的 x 和 y 限制意味着您看不到。