在matplotlib中组合2D / 3D绘图

时间:2014-12-08 21:25:59

标签: python matplotlib plot contour

我有以下,用于绘制我的井的简单代码:

import matplotlib.pyplot as plt

a = 0
b = 0

plt.axis([-100,100,-100,100])
plt.plot(a,b,"ro")
plt.grid(True)      
plt.title ('Location of Well')       
plt.xlabel('Distance in x [m]')       
plt.ylabel('Distance in y [m]')     
plt.show()  

这段代码给了我想要的简单情节。

我的压力分布有另一个轮廓图:

from scipy.special import *
import matplotlib.pyplot as plt
import numpy as np

## Definition der Parameter für Druckgleichung nach Rudnicki (1986) ##
q = 6.0/1000                   #Fluidmenge pro Fläche und Zeit [m³/s]
rhof = 1000                    #Dichte Flüssigkeit [kg/m³]
lameu = 11.2*10**9             #Lamé-Parameter, undrained [Pa]
lame = 8.4*10**9               #Lamé-Parameter, drained [Pa]
np.pi                             #durch Pythonmodul "math" gegeben
alpha = 0.65                   #Biot-Willis-Koeffizient
G = 8.4*10**9                  #Schermodul [Pa]
k = 1.0*10**(-15)              #Permeabilität [m²] bzw. [Darcy] 
eta = 0.001                    #Viskosität des Fluids [Pa*s]            
t = 1000*24*3600               #Zeit in [s]

## Beziehungen der Parameter untereinander ##
kappa = k/eta                  #Berechnung der Permeabilität nach Rudnicki (1986), [m³*s/kg]
print "kappa ist:",kappa       #Ausgabe Permabilität
c = (kappa*(lameu-lame)*(lame+2*G))/((alpha**2)*(lameu+2*G))    #Berechnung der Diffusivität
print "c ist:",c                                                #Ausgabe der Diffusivität

## Wertebereich in [m] ##
xmin = -100
xmax = 100
ymin = -100
ymax = 100

x = np.arange(xmin,xmax,5.0)
y = np.arange(ymin,ymax,5.0)
x, y = np.meshgrid(x, y)  # Erzeugung einer Matrix


## Formeln für den Druck ##
r = np.sqrt(x**2+y**2)                              # Abstandsvektor
P = (q/(rhof*4*np.pi*kappa))*(expn(1,(r**2)/(4*c*t)))  # Druckformel nach Rudnicki     
z = P/1e6                                  # Division durch 1e6, um Megapascal zu erhalten                                                                     
print z
z[z==np.inf] = np.nan            # Werte, die gegen unendlich gehen, werden nicht geplottet 

plt.figure() 
CS = plt.contour(x, y, z)
plt.clabel(CS, inline=1, fontsize=10)
plt.show()

有没有办法将这些图组合在一起,即同时看到井点和等高线图? 另外:我如何配置我的x轴和y轴?在我的等高线图中,它们不会达到所需的值。

1 个答案:

答案 0 :(得分:0)

q = 6.0/1000
rhof = 1000
lameu = 11.2*10**9
lame = 8.4*10**9
np.pi
alpha = 0.65
G = 8.4*10**9
k = 1.0*10**(-15)
eta = 0.001
t = 1000*24*3600

kappa = k/eta
print "kappa ist:",kappa
c = (kappa*(lameu-lame)*(lame+2*G))/((alpha**2)*(lameu+2*G))
print "c ist:",c


xmin = -100
xmax = 100
ymin = -100
ymax = 100

x = np.arange(xmin,xmax,5.0)
y = np.arange(ymin,ymax,5.0)
x, y = np.meshgrid(x, y)  # Erzeugung einer Matrix



r = np.sqrt(x**2+y**2)
P = (q/(rhof*4*np.pi*kappa))*(expn(1,(r**2)/(4*c*t)))
z = P/1e6
print z
z[z==np.inf] = np.nan
a = 0
b =0
plt.figure()
CS = plt.contour(x, y, z)
points = plt.plot(a,b, 'ro')
plt.xticks(np.arange(-80,80,5))  # xticks from -80 to 80 with step 5
plt.yticks(np.arange(-80,80, 5))
plt.clabel(CS, inline=1, fontsize=10)
plt.show()

enter image description here