For*_*t17 31 python plot matplotlib layer
假设我运行以下脚本:
import matplotlib.pyplot as plt
lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b')
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r')
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这产生以下结果:
如何指定图层的从上到下的顺序,而不是让我选择Python?
arm*_*ita 46
我不知道为什么会zorder出现这种行为,这可能是一个错误,或者至少是一个记录严重的功能.这可能是因为zorder在构建绘图(如网格,轴等等)时已经有自动引用,当您尝试指定zorderfor元素时,它们会以某种方式重叠它们.无论如何,这都是假设的.
为了解决您的问题,只需zorder夸大其中.例如,而不是0,1,2,使它0,5,10:
import matplotlib.pyplot as plt
lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b',zorder=10)
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r',zorder=5)
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g',zorder=0)
plt.show()
Run Code Online (Sandbox Code Playgroud)
,结果如下:
对于这个图,我指定了你问题中显示的相反顺序.
小智 13
虽然 Tonechas 是正确的,默认顺序是根据调用绘图的顺序从后到前,但应该注意的是,使用其他绘图工具(散点图、误差条等)时,默认顺序并不明确。
import matplotlib.pyplot as plt
import numpy as np
plt.errorbar(np.arange(0,10),np.arange(5,6,0.1),color='r',lw='3')
plt.plot(np.arange(0,10),np.arange(0,10),'b', lw=3)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这些图层从下到上按照对plot函数的相应调用顺序排列。
import matplotlib.pyplot as plt
lineWidth = 30
plt.figure()
plt.subplot(2, 1, 1) # upper plot
plt.plot([-1, 1], [-1, 1], lw=5*lineWidth, c='b') # bottom blue
plt.plot([-1, 1], [-1, 1], lw=3*lineWidth, c='r') # middle red
plt.plot([-1, 1], [-1, 1], lw=lineWidth, c='g') # top green
plt.subplot(2, 1, 2) # lower plot
plt.plot([-1, 1], [-1, 1], lw=5*lineWidth, c='g') # bottom green
plt.plot([-1, 1], [-1, 1], lw=3*lineWidth, c='r') # middle red
plt.plot([-1, 1], [-1, 1], lw=lineWidth, c='b') # top blue
plt.show()
Run Code Online (Sandbox Code Playgroud)
从下图可以清楚地看出,这些图是按照从下到上,从上到下的规则排列的。
| 归档时间: |
|
| 查看次数: |
35936 次 |
| 最近记录: |