Fom*_*ite 1 python data-visualization matplotlib
我正在使用以下代码使用matplotlib在Python中生成包含大量过度绘制线的图:
def a_run(n, t, s):
xaxis = np.arange(t, dtype=float)
#Scale x-axis by the step size
for i in xaxis:
xaxis[i]=(xaxis[i]*s)
for j in range(n):
result = a_solve(t,s)
plt.plot(result[:,1], color = 'r', alpha=0.1)
def b_run(n, t, s):
xaxis = np.arange(t, dtype=float)
#Scale x-axis by the step size
for i in xaxis:
xaxis[i]=(xaxis[i]*s)
for j in range(n):
result = b_solve(t,s)
plt.plot(result[:,1], color = 'b', alpha=0.1)
a_run(100, 300, 0.02)
b_run(100, 300, 0.02)
plt.xlabel("Time")
plt.ylabel("P")
plt.legend(("A","B"), shadow=True, fancybox=True) Legend providing same color for both
plt.show()
Run Code Online (Sandbox Code Playgroud)
这会产生如下情节:

问题在于图例 - 因为线条的绘制具有非常高的透明度,因此图例线条也是如此,而且很难阅读.另外,当我需要一个红色和一个蓝色时,它正在绘制我怀疑是"前两个"线,并且两个都是红色的.
我无法看到任何调整Matplotlib中线条颜色的方法,就像我说的那样,R图形库,但有没有人有一个坚实的解决方法?
如果你绘制很多线条,你应该使用LineCollection获得更好的表现
import matplotlib.collections as mplcol
import matplotlib.colors as mplc
def a_run(n, t, s):
xaxis = np.arange(t, dtype=float)
#Scale x-axis by the step size
for i in xaxis:
xaxis[i]=(xaxis[i]*s)
result = [a_solve(t,s)[:,1] for j in range(n)]
lc = mplcol.LineCollection(result, colors=[mplc.to_rgba('r', alpha=0.1),]*n)
plt.gca().add_collection(lc)
return ls
[...]
lsa = a_run(...)
lsb = b_run(...)
leg = plt.legend((lsa, lsb),("A","B"), shadow=True, fancybox=True)
#set alpha=1 in the legend
for l in leg.get_lines():
l.set_alpha(1)
plt.draw()
Run Code Online (Sandbox Code Playgroud)
我没有测试过代码本身,但是我经常做类似的事情来绘制大量的行,并且每个集合都有一行图例
| 归档时间: |
|
| 查看次数: |
1618 次 |
| 最近记录: |