Вопрос от PythonProgramming был ближе всего к моему вопросу, но ответ был неудовлетворительным. По Python-In-Excel очень мало документации. Я запускаю сценарий Python ВНУТРИ Excel, который содержит цикл, и я хотел бы «напечатать» количество итераций (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()
В настоящее время код создает нужный мне график. Просто нужно вернуть число_очков. Один номер, а не база данных. Ниже приведено изображение графика, созданного сценарием.
Вопрос от PythonProgramming был ближе всего к моему вопросу, но ответ был неудовлетворительным. По Python-In-Excel очень мало документации. Я запускаю сценарий Python ВНУТРИ Excel, который содержит цикл, и я хотел бы «напечатать» количество итераций (number_of_points) в ячейке на том же листе. Большая часть документации относится к большим базам данных, которые меня не интересуют. Я создаю рабочие таблицы по естественным наукам и математике, используя Excel и Python, а ранее — VBA. Вот скрипт: [code]import numpy as np import matplotlib.pyplot as plt
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() [/code] В настоящее время код создает нужный мне график. Просто нужно вернуть число_очков. Один номер, а не база данных. Ниже приведено изображение графика, созданного сценарием. [img]https://i.sstatic.net/ nS9blEuP.jpg[/img]