ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何从Matplotlib格式化轮廓线

2019-12-10 06:58:04  阅读:273  来源: 互联网

标签:matplotlib sympy python


我正在使用Matplotlib生成隐式方程的图(例如y ^ x = x ^ y).非常感谢我已经获得的帮助,我对此已经走得很远了.我已经使用轮廓线来绘制曲线.我剩下的问题是格式化轮廓线,例如宽度,颜色,尤其是zorder,其中轮廓出现在我的网格线后面.当然,在绘制标准功能时,它们可以正常工作.

import matplotlib.pyplot as plt 
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
import numpy as np 

fig = plt.figure(1) 
ax = fig.add_subplot(111) 

# set up axis 
ax.spines['left'].set_position('zero') 
ax.spines['right'].set_color('none') 
ax.spines['bottom'].set_position('zero') 
ax.spines['top'].set_color('none') 
ax.xaxis.set_ticks_position('bottom') 
ax.yaxis.set_ticks_position('left') 

# setup x and y ranges and precision
x = np.arange(-0.5,5.5,0.01) 
y = np.arange(-0.5,5.5,0.01)

# draw a curve 
line, = ax.plot(x, x**2,zorder=100,linewidth=3,color='red') 

# draw a contour
X,Y=np.meshgrid(x,y)
F=X**Y
G=Y**X
ax.contour(X,Y,(F-G),[0],zorder=100,linewidth=3,color='green')

#set bounds 
ax.set_xbound(-1,7)
ax.set_ybound(-1,7) 

#add gridlines 
ax.xaxis.set_minor_locator(MultipleLocator(0.2)) 
ax.yaxis.set_minor_locator(MultipleLocator(0.2)) 
ax.xaxis.grid(True,'minor',linestyle='-',color='0.8')
ax.yaxis.grid(True,'minor',linestyle='-',color='0.8') 

plt.show() 

解决方法:

这有点黑,但是…

显然,在当前版本中,Matplotlib不支持轮廓上的zorder.但是,此支持为was recently added to the trunk.

因此,执行此操作的正确方法是等待1.0版本发布,或者只是继续从主干重新安装.

现在,这是朴实的部分.我做了一个快速测试,如果我改变了618行

python/site-packages/matplotlib/contour.py

将zorder添加到collections.LineCollection调用中,它可以解决您的特定问题.

col = collections.LineCollection(nlist,
   linewidths = width,
   linestyle = lstyle,
   alpha=self.alpha,zorder=100)

这不是正确的做事方式,但可能只在紧急情况下起作用.

同样离题,如果您接受对先前问题的一些答复,则可能会在此处获得更快的帮助.人们喜欢那些代表点:)

标签:matplotlib,sympy,python
来源: https://codeday.me/bug/20191210/2099831.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有