同一张图上有多个图

时间:2019-10-12 08:42:07

标签: python-3.x plot matplotlib-basemap

我想在一个图形上绘制一个函数(数据来自数组)和数据的(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 :(得分:0)

我不确定它是否对您有用,建议您尝试以下

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

答案 1 :(得分:0)

尝试不在蜘蛛控制台中运行脚本,而是在其左侧的编辑器中运行。控制台按命令处理命令,因此,它将同时处理一个图并以相同方式打印它。

使用脚本创建文件code.py,然后运行它。您可以使用spyder中的“播放”按钮或通过进入控制台并键入python code.py来完成此操作。

证明一切正确。如here所述。这应该起作用:

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

答案 2 :(得分:0)

最后它有效...是我的错。我用e11声明了G,它必须是e-11