Несколько графиков на одном графике - PullRequest
0 голосов
/ 12 октября 2019

Я хочу построить на том же графике одну функцию (данные, поступающие из массива) и линию между (xmin, ymin) до (xmax, ymax) данных

import numpy as np
import matplotlib.pyplot as plt

exo_data = np.loadtxt('./exoplanets.dat')

au2m        = 149597870700
day2seconds = 86400 
M_Jupiter   = 1.898e27
M_Sun       = 1.989e30
G           = 6.674e11

R=exo_data[:,0]*au2m
T=exo_data[:,1]*day2seconds 
Mp=exo_data[:,2]*M_Jupiter
Ms=exo_data[:,3]*M_Sun
Mstar=np.mean(Ms)
C=(mth.pi*4)/G*Mstar

x=R**3
y=T**2

xmin=np.min(R)
ymin=np.min(T)
xmax=np.max(R)
ymax=np.max(T)

plt.plot([xmin,ymin], [xmax,ymax], color='red')
plt.plot(x,y, 'ro', color='blue')
plt.show
plt.close

У меня есть толькопервый участок в консоли spyder, а не второй

Graph

Ожидается это: enter image description here

Ответы [ 3 ]

0 голосов
/ 12 октября 2019

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

Создайте файл code.py со своим сценарием, а затем запустите его. Вы можете сделать это с помощью кнопки воспроизведения в spyder или перейти к консоли и набрать python code.py.

Proof все делает правильно. Как указано здесь . Это должно работать:

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0, 2*math.pi, 400)
a = sin(t)
b = cos(t)
c = a + b

plt.plot(t, a, 'r') # plotting t, a separately 
plt.plot(t, b, 'b') # plotting t, b separately 
plt.plot(t, c, 'g') # plotting t, c separately 
plt.show()

И должно производить это.

image

0 голосов
/ 15 октября 2019

Наконец-то это работает ... Это моя вина. Я объявил G с E11, и это должно быть E-11

0 голосов
/ 12 октября 2019

Я не уверен, что это сработает для вас, я предлагаю вам попробовать следующее

plt.plot([xmin,ymin], [xmax,ymax], x, y,'ro', color = 'red')
plt.show
...