Python 3D绘图和3D直方图子绘图
这是我的密码:Python 3D绘图和3D直方图子绘图,python,matplotlib,Python,Matplotlib,这是我的密码: import numpy as np import math from pylab import cm,imshow,colorbar,title,show import pylab as pyl from mpl_toolkits import mplot3d import matplotlib.pyplot as plt #Parameters N = 10**2
import numpy as np
import math
from pylab import cm,imshow,colorbar,title,show
import pylab as pyl
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
#Parameters
N = 10**2 #Step of discretization
# Cost function
T = np.linspace(0,1,N, False) #Discretization of [0,1]
S = np.linspace(1,2,N,False) #Discretization of [1,2]
X,Y = np.meshgrid(T,S)
C = (X-Y)**2 #Matrix of c[i,j]=(xi-yj)²
def Sinkhorn(M, r, c, lam):
"""
Computes the optimal transport matrix and Slinkhorn distance using the
Sinkhorn-Knopp algorithm
Inputs:
- M : cost matrix (n x m)
- r : vector of marginals (n, )
- c : vector of marginals (m, )
- lam : strength of the entropic regularization
- arret : convergence parameter
Outputs:
- P : optimal transport matrix (n x m)
- dist : Sinkhorn distance
"""
# Uniform measure over [0;1]
uni1 = np.ones(N)
# Uniform measure over [1;2]
uni2 = np.ones(N)
n = 1000
fig = plt.figure()
ax = plt.axes(projection='3d')
# I'm going to compute a matrix which is a approximation of a probability over R^{2}
Gamma_star = Sinkhorn(C, uni1, uni2, 1/10**4)
ax.scatter(X, Y, Gamma_star)
plt.title("Gamma bar 1/{} entre une uniforme([0;1]) et uniforme([1;2])".format(1/10**4))
plt.show()
我的问题:Gamma bar收敛到一个我想研究的度量值,所以我想打印子图,类似这样的东西:(当然它不起作用,它只是告诉你我在想什么)
我还想用X、Y和Z=伽马_条绘制(子图,以非常相同的方式)3D直方图,如下所示:
我正在努力,如果有人知道如何做到这一点,这将是一种解脱,谢谢你的帮助
尊敬。我设法完成了第一部分(图中的子图),以下是我的解决方案:
fig = plt.figure()
for i in range(4):
ax = fig.add_subplot(2, 2, i+1, projection='3d')
Gamma_star, tqui = Sinkhorn(C, uni1, uni2, 1/10**i)
ax.scatter(X, Y, Gamma_star)
plt.title("Gamma bar 1/{} entre une uniforme([0;1]) et uniforme([1;2])".format(1/10**i))
plt.show()
结果是:
你有什么办法改进我的情节吗?
可能添加颜色,可能更改参数,因为所有绘图看起来都一样。。。
欢迎任何帮助:)
例如,我觉得这种颜色很酷:
无论如何,现在我将重点关注Historogram3D子图。我成功地完成了第一部分(图的子图),以下是我的解决方案:
fig = plt.figure()
for i in range(4):
ax = fig.add_subplot(2, 2, i+1, projection='3d')
Gamma_star, tqui = Sinkhorn(C, uni1, uni2, 1/10**i)
ax.scatter(X, Y, Gamma_star)
plt.title("Gamma bar 1/{} entre une uniforme([0;1]) et uniforme([1;2])".format(1/10**i))
plt.show()
结果是:
你有什么办法改进我的情节吗?
可能添加颜色,可能更改参数,因为所有绘图看起来都一样。。。
欢迎任何帮助:)
例如,我觉得这种颜色很酷:
不管怎样,现在我要关注histogram3D子图