鱼C论坛

 找回密码
 立即注册
查看: 1887|回复: 4

[已解决]SubplotZero

[复制链接]
发表于 2019-9-9 16:50:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import SubplotZero
import numpy as np

fig = plt.figure(figsize=(4, 3))

# a subplot with two additional axis, "xzero" and "yzero". "xzero" is
# y=0 line, and "yzero" is x=0 line.
ax = SubplotZero(fig, 1, 1, 1)
fig.add_subplot(ax)

# make xzero axis (horizontal axis line through y=0) visible.
ax.axis["xzero"].set_visible(True)
ax.axis["xzero"].label.set_text("Axis Zero")

# make other axis (bottom, top, right) invisible.
for n in ["bottom", "top", "right"]:
    ax.axis[n].set_visible(False)

求解答SubplotZero是什么?以及ax = SubplotZero(fig, 1, 1, 1)这一语句的作用是什么

谢谢大家
最佳答案
2019-9-9 23:41:03
本帖最后由 傻纸 于 2019-9-9 23:54 编辑

官方确实没有文档说明这个函数的用法
但是可以试一下吧,因为只是SubplotZero,那就把其他不相关的代码去掉了,另外也需要加些数据进去,改成这样
  1. import matplotlib.pyplot as plt
  2. from mpl_toolkits.axisartist.axislines import SubplotZero
  3. import numpy as np

  4. fig = plt.figure()

  5. ax = SubplotZero(fig, 1, 1, 1)
  6. fig.add_subplot(ax)

  7. ax.axis["xzero"].set_visible(True)
  8. ax.axis["yzero"].set_visible(True)

  9. x=np.linspace(-2*np.pi,2*np.pi,100)
  10. plt.plot(x,np.sin(x))
  11. plt.show()
复制代码

显示是这样
p1.jpg
然后把ax = SubplotZero(fig, 1, 1, 1),改成
  1. ax = SubplotZero(fig,111)
复制代码

显示效果也是一样,把函数看成SubplotZero(fig,a,b,c)改变abc的值发现这几个参数取值是有要求的,其中a>=1,b>=1,c=1
然后
ax = SubplotZero(fig, 2, 1, 1)
f2.jpg
y轴显示的比例缩小了一半
同样ax = SubplotZero(fig, 2, 1, 1),则x轴显示比例缩小到1/2

-------
官方的参考实例里面都直接设置成这样SubplotZero(fig, 1, 1, 1),那这些感觉就不要去改变它的值了,那它的作用就应该是配置0轴,
假设我要制作一个显示0轴的图,那么官方给出的方法就是这三步:
1.用ax = SubplotZero(fig, 1, 1, 1),配置0轴
2.用fig.add_subplot(ax)将设置好的0轴添加进子图?
3.使用ax.axis["xzero"].set_visible(True),让0轴可见

那还有其他添加0轴的方法吗?直接的方法应该是没有的,但是你也可以试着这样做
  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. fig, ax = plt.subplots()

  4. x=np.linspace(-2*np.pi,2*np.pi,100)
  5. ax.plot(x, np.sin(x))

  6. ax.spines['bottom'].set_position(('data', 0))
  7. ax.spines['left'].set_position(('data', 0))

  8. ax.spines['top'].set_visible(False)
  9. ax.spines['right'].set_visible(False)

  10. plt.show()
复制代码

f3.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-9 17:53:13 | 显示全部楼层
  1. from mpl_toolkits.axisartist.axislines import SubplotZero
复制代码

应该是mpl_toolkits.axisartist.axislines模块里的函数吧

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-9 21:41:48 | 显示全部楼层
我去找了没找到,help里的我也看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-9 23:41:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻纸 于 2019-9-9 23:54 编辑

官方确实没有文档说明这个函数的用法
但是可以试一下吧,因为只是SubplotZero,那就把其他不相关的代码去掉了,另外也需要加些数据进去,改成这样
  1. import matplotlib.pyplot as plt
  2. from mpl_toolkits.axisartist.axislines import SubplotZero
  3. import numpy as np

  4. fig = plt.figure()

  5. ax = SubplotZero(fig, 1, 1, 1)
  6. fig.add_subplot(ax)

  7. ax.axis["xzero"].set_visible(True)
  8. ax.axis["yzero"].set_visible(True)

  9. x=np.linspace(-2*np.pi,2*np.pi,100)
  10. plt.plot(x,np.sin(x))
  11. plt.show()
复制代码

显示是这样
p1.jpg
然后把ax = SubplotZero(fig, 1, 1, 1),改成
  1. ax = SubplotZero(fig,111)
复制代码

显示效果也是一样,把函数看成SubplotZero(fig,a,b,c)改变abc的值发现这几个参数取值是有要求的,其中a>=1,b>=1,c=1
然后
ax = SubplotZero(fig, 2, 1, 1)
f2.jpg
y轴显示的比例缩小了一半
同样ax = SubplotZero(fig, 2, 1, 1),则x轴显示比例缩小到1/2

-------
官方的参考实例里面都直接设置成这样SubplotZero(fig, 1, 1, 1),那这些感觉就不要去改变它的值了,那它的作用就应该是配置0轴,
假设我要制作一个显示0轴的图,那么官方给出的方法就是这三步:
1.用ax = SubplotZero(fig, 1, 1, 1),配置0轴
2.用fig.add_subplot(ax)将设置好的0轴添加进子图?
3.使用ax.axis["xzero"].set_visible(True),让0轴可见

那还有其他添加0轴的方法吗?直接的方法应该是没有的,但是你也可以试着这样做
  1. import numpy as np
  2. import matplotlib.pyplot as plt

  3. fig, ax = plt.subplots()

  4. x=np.linspace(-2*np.pi,2*np.pi,100)
  5. ax.plot(x, np.sin(x))

  6. ax.spines['bottom'].set_position(('data', 0))
  7. ax.spines['left'].set_position(('data', 0))

  8. ax.spines['top'].set_visible(False)
  9. ax.spines['right'].set_visible(False)

  10. plt.show()
复制代码

f3.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-16 19:19:22 | 显示全部楼层
傻纸 发表于 2019-9-9 23:41
官方确实没有文档说明这个函数的用法
但是可以试一下吧,因为只是SubplotZero,那就把其他不相关的代码去 ...

谢谢你呀,有人这么详细的解答还挺感动的~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-8 04:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表