python – 为什么matplotlib需要在plt.scatter()之前设置日志比例而不是plt.plot()?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 为什么matplotlib需要在plt.scatter()之前设置日志比例而不是plt.plot()?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1374字,纯文字阅读大概需要2分钟。
内容图文
![python – 为什么matplotlib需要在plt.scatter()之前设置日志比例而不是plt.plot()?](/upload/InfoBanner/zyjiaocheng/705/6750e8aadd3c4a0d85764bfcc6e9a77f.jpg)
我在helpful answer中发现,当在y轴上使用logrithmic scale时,plt.scatter()和plt.plot()的行为会有所不同.
使用plot,我可以在使用plt.show()之前随时更改为log,但是在使用scatter方法之前必须预先设置log.
这只是matplotlib中的一个历史性且不可逆转的工件,还是属于“意外行为”类别?
import matplotlib.pyplot as plt
X = [0.997, 2.643, 0.354, 0.075, 1.0, 0.03, 2.39, 0.364, 0.221, 0.437]
Y = [15.487507, 2.320735, 0.085742, 0.303032, 1.0, 0.025435, 4.436435,
0.025435, 0.000503, 2.320735]
plt.figure()
plt.subplot(2,2,1)
plt.scatter(X, Y)
plt.xscale('log')
plt.yscale('log')
plt.title('scatter - scale last')
plt.subplot(2,2,2)
plt.plot(X, Y)
plt.xscale('log')
plt.yscale('log')
plt.title('plot - scale last')
plt.subplot(2,2,3)
plt.xscale('log')
plt.yscale('log')
plt.scatter(X, Y)
plt.title('scatter - scale first')
plt.subplot(2,2,4)
plt.xscale('log')
plt.yscale('log')
plt.plot(X, Y)
plt.title('plot - scale first')
plt.show()
解决方法:
这与matplotlib计算的显示区域(轴限制)有某种关系.
通过使用set_xlim和set_ylim方法手动编辑轴范围可以解决此问题.
plt.figure()
plt.scatter(X, Y)
plt.yscale('log')
plt.xscale('log')
axes = plt.gca()
axes.set_xlim([min(X),max(X)])
axes.set_ylim([min(Y),max(Y)])
plt.show()
然而,这种行为的确切原因尚不清楚.欢迎提出建议.
编辑
正如评论部分所述,显然Matplotlib已将Autoscaling has fundamental problems标识为其官方Github回购的发布关键问题,将在即将推出的版本中修复.谢谢.
内容总结
以上是互联网集市为您收集整理的python – 为什么matplotlib需要在plt.scatter()之前设置日志比例而不是plt.plot()?全部内容,希望文章能够帮你解决python – 为什么matplotlib需要在plt.scatter()之前设置日志比例而不是plt.plot()?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。