PythonProgramming 的问题最接近我的问题,但答案并不令人满意。关于 Python-In-Excel 的文档非常少。我正在 Excel 中运行一个 Python 脚本,其中包含一个循环,我想将迭代次数(number_of_points)“打印”到同一张表中的单元格中。大多数文档都涉及我不感兴趣的大型数据库。我使用 Excel 和 Python 以及之前的 VBA 创建科学和数学工作表。这是脚本:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot(1, 1, 1)
a = xl("F2")
b = xl("G2")
c = xl("H2")
d = xl("I2")
x = np.linspace(-10, 10, 400)
y1 = -a*x+b
y2 = 0*x+c
# Create the plot
plt.plot(x, y1, color='blue', ls='--')
plt.plot(x, y2, color='red', ls='--')
plt.axvline(x = d, color = 'g', ls = "--")
number_of_points = 0
for i in range(-10, 11):
for j in range(-10, 11):
if a*i + j < b and j > c and i > d:
plt.plot(i, j, 'go') # 'go' for green points
number_of_points = number_of_points + 1
# Major ticks every 20, minor ticks every 5
major_ticks = np.arange(-10, 11, 1)
minor_ticks = np.arange(-10, 11, 1)
ax.set_xticks(major_ticks)
ax.set_xticks(minor_ticks, minor=True)
ax.set_yticks(major_ticks)
ax.set_yticks(minor_ticks, minor=True)
ax.axhline(linewidth=1.2, color="k")
ax.axvline(linewidth=1.2, color="k")
# And a corresponding grid
ax.grid(which='both')
# Or if you want different settings for the grids:
ax.grid(which='minor', alpha=0.2)
ax.grid(which='major', color ="black", linewidth = 0.6, alpha=0.8)
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.show()
目前,代码生成了我想要的图表。只需要返回 number_of_points 即可。一个数字,而不是数据库。下面是脚本生成的图表的图片。
您需要以“number_of_points”结束脚本:
...
plt.xlim(-10, 10)
plt.ylim(-10, 10)
plt.show()
number_of_points