Пустой график ... используется для создания l oop - PullRequest
0 голосов
/ 24 января 2020
import matplotlib.pyplot as plt
import numpy as np
G=6.674e-11 #gravitational constant
Mb=1.591e41 #mass of bulge
ps=1.616e-19 #density of stellar system
pd=4.041e-18 #density of dark matter halo
Rc=6.171e19 #Radius at 2kpc in meters
for i in np.arange(0, 6.172e19, 1e19):
    v = (np.sqrt(ps*(4/3)*np.pi*(i**2)*G))
    print(i)
    print(v)
    plt.plot(i, v, color='red')
plt.show()

Это дает мне пустой сюжет. Не уверен почему. Я пробовал разные техники безрезультатно. Я пропускаю функцию?

Ответы [ 3 ]

0 голосов
/ 24 января 2020

В ноутбуке Jupyter это работает для меня. Вам недостают следующих частей:

  1. вам нужен маркер в функции plot
  2. , вам нужно plt.show() для отображения графика между итерациями
    import matplotlib.pyplot as plt
    import numpy as np
    G=6.674e-11 #gravitational constant
    Mb=1.591e41 #mass of bulge
    ps=1.616e-19 #density of stellar system
    pd=4.041e-18 #density of dark matter halo
    Rc=6.171e19 #Radius at 2kpc in meters
    for i in np.arange(0, 6.172e19, 1e19):
        v = (np.sqrt(ps*(4/3)*np.pi*(i**2)*G))
        print(i)
        print(v)
        plt.plot(i, v, color='red', marker='o')
        plt.show()
0 голосов
/ 24 января 2020

Короче говоря, тип маркера также требуется в plt.plot (), который назначит способ представления ваших данных

0 голосов
/ 24 января 2020

Это дает вам пустой график, потому что он предполагает, что вы строите линии, когда вы на самом деле наносите точки. Есть несколько способов исправить это.

Если вы просто хотите построить точки:

plt.plot(i, v, color='red', marker='.')

или

plt.scatter(i, v, color='red')

Если вы хотите, чтобы линии соединяли точки данных, вам придется измените свой код более значительно. Как предполагает Сати sh Сандживи, вы можете избежать for l oop в целом:

i = np.arange(0, 6.172e19, 1e19)
v = (np.sqrt(ps*(4/3)*np.pi*(i**2)*G))
plt.plot(i, v, color='red')
plt.show()
...