我用Python中的一些数据绘制了表面图。
现在我试图改变这种情节的风格。但不幸的是,我陷入了线条颜色。它默认为黑色,但我想让它变成红色或任何其他颜色。
我的代码是:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
data=np.loadtxt("test.txt")
def formateU(data):
U = np.zeros((20,20))
for value in data:
U[value[0],value[1]] = value[2]
return U
U = formateU(data)
y,x=np.meshgrid(np.linspace(0.,19,20),np.linspace(0.,19,20))
fig = plt.figure()
ax=plt.axes(projection='3d')
ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5)
ax.view_init(30, 45)
plt.savefig("test.png")
plt.show()
似乎很明显它必须是另一个参数:
ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5)
但我无法弄清楚。
你能帮我吗?
test.txt 可在http://www.file-upload.net/download-8564062/test.txt.html
获取答案 0 :(得分:8)
如何找到所需的关键字:
plot_surface方法会创建基于Poly3DCollection的PolyCollections。后者会收到edgecolors
(或facecolors
)等关键字。
在你的例子中:
ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5, edgecolors='r')
答案 1 :(得分:3)
由于您已将alpha
设置为零并且未绘制表面图块,因此您可能需要考虑使用plot_wireframe
,其中color
设置线条颜色(相反)而不是plot_surface
)中的图块颜色。
但正如雅各布建议的那样,edgecolors
也会奏效。