更改plot_surface中的线条颜色

时间:2014-01-28 22:27:29

标签: python numpy matplotlib mplot3d

我用Python中的一些数据绘制了表面图。

enter image description here

现在我试图改变这种情节的风格。但不幸的是,我陷入了线条颜色。它默认为黑色,但我想让它变成红色或任何其他颜色。

我的代码是:

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

获取

2 个答案:

答案 0 :(得分:8)

如何找到所需的关键字:
plot_surface方法会创建基于Poly3DCollectionPolyCollections。后者会收到edgecolors(或facecolors)等关键字。

在你的例子中:

 ax.plot_surface(x,y,U,rstride=1,cstride=1,alpha=0,linewidth=0.5, edgecolors='r')

enter image description here

答案 1 :(得分:3)

由于您已将alpha设置为零并且未绘制表面图块,因此您可能需要考虑使用plot_wireframe,其中color设置线条颜色(相反)而不是plot_surface)中的图块颜色。

但正如雅各布建议的那样,edgecolors也会奏效。