我已经设置了
import matplotlib as mpl
AXES_COLOR = '#333333'
mpl.rc('axes', edgecolor=AXES_COLOR, labelcolor=AXES_COLOR, grid=True)
mpl.rc('xtick', color=AXES_COLOR)
mpl.rc('ytick', color=AXES_COLOR)
mpl.rc('grid', color=AXES_COLOR)
轴标签和刻度线的颜色可在2D和3D中正确设置。但是,edgecolor
不适用于3D轴并且它们保持黑色。同样,网格不受影响。
我想了解如何访问3D绘图的各个轴:
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d # Needed for 3d projection.
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.w_zaxis # <- the z axis
documentation提到我们可以使用的属性,直到开发人员完成对3D代码的重构:
import pprint
pprint.pprint(ax.w_xaxis._AXINFO)
{'x': {'color': (0.95, 0.95, 0.95, 0.5),
'i': 0,
'juggled': (1, 0, 2),
'tickdir': 1},
'y': {'color': (0.9, 0.9, 0.9, 0.5),
'i': 1,
'juggled': (0, 1, 2),
'tickdir': 0},
'z': {'color': (0.925, 0.925, 0.925, 0.5),
'i': 2,
'juggled': (0, 2, 1),
'tickdir': 0}}
但是,颜色参数会更改轴平面背景的颜色(网格的布线之间),而不是这些平面边缘的颜色。
我挖得太深了吗?
答案 0 :(得分:3)
不要改变axis3d.py,而是试试这个:ax.w_xaxis.line.set_color("red")
答案 1 :(得分:2)
事实证明这是不可能的,因为这些值是硬编码的。 This archived email from the matplotlib-users mailing list帮助了我。这是相关部分:
不幸的是,你偶然发现了mplot3d的丑陋之一 实现。我希望能为下一个提供更多控制权 发布。但是现在,没有办法关掉轴刺 (因为它们没有被实施为刺)。如果你真的想深入研究 在源代码中,您可以将颜色参数更改为Line2D调用 matplotlib / lib / mpl_toolkits / axis3d.py中的init3d()方法
虽然这个答案正在解决另一个问题,但它让我朝着axis3d.py
的方向前进。我在/usr/lib/pymodules/python2.7/mpl_toolkits/mplot3d
找到了它。我对原始axis3d.py
进行了备份,并将axis3d.pyc
移开了。
由于代码很短且编写得很好,因此找到我必须更改的两行代码并不需要很长时间。
self.line=...
中的__init__
:只需将color=(0, 0, 0, 1)
替换为color=(1, 0, 0, 1)
,即可获得可怕的红色。元组的组件是红色,绿色,蓝色,alpha,所有浮点数从0到1。draw
方法。我用我选择的颜色替换了颜色self.gridlines.set_color([(0.9,0.9,0.9,1)] * len(lines))
。就是这样,它才有效。不是最方便的,但它不是编辑rc配置文件的工作。
我没有重新创建.pyc
文件。它不会重新创建自己因为我没有以root身份运行我的python代码。我不介意python每次重新编译.py
所需的额外毫秒数。