我从 Sentdex 外汇机器学习教程中获得了以下代码
每当我运行此代码时,都会弹出一个没有绘制数据的空图表。该警告还表明变量Fig 未使用。
我删除了 Fig 变量,尝试导入 pandas 并使用该语法运行代码版本,并尝试更改用于 matplotlib 的后端。
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import matplotlib.dates as mdates
import numpy as np
def graphRawFX():
date,bid,ask = np.loadtxt('GBPUSD1d.txt', unpack=True, delimiter=',',
converters={0:mdates.strpdate2num('%Y%m%d%H%M%S')})
fig = plt.figure(figsize=(10,7))
ax1 = plt.subplot2grid((40,40), (0,0), rowspan=40, colspan=40)
ax1.plot (date,bid)
ax1.plot (date,ask)
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
plt.grid(True)
plt.show(True)
显示一个图表,其中显示正确绘制的数据。
最佳答案
就您现在的代码而言,从功能上讲,它基本上是这样的:
import matplotlib.pyplot as plt
plt.grid(True)
plt.show(True)
它从 matplotlib
导入 plt
,然后创建一个网格并显示
它。代码中没有使用任何其他内容。
绘制数据的所有工作都将在 graphRawFX()
中进行,而该函数永远不会被调用。
最后两行 plt.grid(True)
和 plt.show(True)
缩进不正确。它们应该缩进到函数内。
之后,您只需将 graphRawFX()
添加到代码末尾(无需任何缩进)即可调用该函数并绘制数据。
这是代码的稍微清理版本,以提高可读性,并确保所有行的缩进都是正确的。
请注意,import matplotlib
和 import matplotlib.ticker as mticker
也已被删除,因为在此特定代码中,它们不是必需的。
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np
def graphRawFX():
date, bid, ask = np.loadtxt(
'GBPUSD1d.txt',
unpack=True,
delimiter=',',
converters={
0: mdates.strpdate2num('%Y%m%d%H%M%S')})
ax1 = plt.subplot2grid((40, 40), (0, 0), rowspan=40, colspan=40)
ax1.plot(date, bid)
ax1.plot(date, ask)
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))
plt.grid(True)
plt.show(True)
graphRawFX()
请注意,上述代码仅适用于 Python 2。要使其在 Python 3 中运行,请查看以下答案:https://stackoverflow.com/a/16496215/214150
关于python - 根据教程fig不需要使用,但是在vscode中收到未使用的变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611970/