- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在第二个轴上遇到了一个奇怪的问题...不确定我是否做错了什么。
来自 twinx example双轴代码
import numpy as np
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, 'b-')
ax1.set_xlabel('time (s)')
# Make the y-axis label and tick labels match the line color.
ax1.set_ylabel('exp', color='b')
for tl in ax1.get_yticklabels():
tl.set_color('b')
ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
ax2.set_ylabel('sin', color='r')
for tl in ax2.get_yticklabels():
tl.set_color('r')
plt.show()
我得到下图。
如果我在绘制之前通过在 plt.show()
之前添加 ax1.cla()
来清除第一个轴,它将按预期清除第一个轴。
如果我在绘制之前通过在 plt.show()
之前添加 ax2.cla()
来清除第二个轴,则会清除两个轴。不太像预期的那样,但似乎是 a known issue 。 (编辑:也许它没有完全清除两个轴,第一个轴的轴标签仍然是蓝色...)
就我的目的而言,这不是问题,因为无论如何我都想清除两个轴。但是当我尝试重新绘制情节时,我遇到的问题出现了。如果我运行以下代码来设置两个轴,然后清除两个轴,然后再次设置它们。
import numpy as np
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, 'b-')
ax1.set_xlabel('time (s)')
# Make the y-axis label and tick labels match the line color.
ax1.set_ylabel('exp', color='b')
for tl in ax1.get_yticklabels():
tl.set_color('b')
ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
ax2.set_ylabel('sin', color='r')
for tl in ax2.get_yticklabels():
tl.set_color('r')
# single line addition to the two_scales.py example
# clears both ax2 and ax1 under matplotlib 1.4.0, clears only ax2 under matplotlib 1.3.1
# obviously, same result with ax2.clear() method
ax1.cla()
ax2.cla()
# Set up the axis again
t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, 'b-')
ax1.set_xlabel('time (s)')
# Make the y-axis label and tick labels match the line color.
ax1.set_ylabel('exp', color='b')
for tl in ax1.get_yticklabels():
tl.set_color('b')
ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
ax2.set_ylabel('sin', color='r')
for tl in ax2.get_yticklabels():
tl.set_color('r')
plt.show()
我看到了下图。由于某种原因,当我重新绘制两个轴时,它不会显示第一个轴。
我做错了什么还是这种行为是预期的?是否有任何解决方法可以清除并重新绘制两个轴图?
最佳答案
我认为问题在于您正在通过再次调用 twinx
创建一个新 ax2
。但原来的孪生轴仍然存在,并且由于您提到的错误,它被设置为不透明,因此它仍然隐藏 ax1
。换句话说,您提到的错误导致 ax1 不可见,因为不透明的 ax2 堆叠在其顶部;您的代码只是在 ax2
之上堆叠了另一个轴,这仍然使 ax1
被“中间”的轴遮挡。
我们可以从 the fix 获取如何修复它的线索对于你提到的错误。尝试在代码末尾(就在 show
之前)执行 ax2.patch.set_visible(False)
。当我这样做时,两个图都会正确显示。
关于python - Matplotlib:使用 twinx() 和 cla() 清除第二个轴后无法重新绘制第一个轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216812/
我需要向用户询问 4 个命令行参数,然后在我的程序中使用这些值进行计算。我的问题是,如何将 CLA 转换为 double 类型?另外,如果他们没有输入正确的 CLA 数量,我需要打印错误。我什么时候会
目前,我正在 cppinstitute.org 学习 C 语言认证类(class)。在其中一个测验中,有一个如下的问题来识别输出。 int i = 1,j= 1; int w1,w2; w1 = (i
我有这段由其他人编写的代码,它在 TI TMS320 命令律加速器上运行。因此它在大小和速度上都进行了优化。 为了得到 1/x,代码总是做这样的事情。 float32 y = __meinvf32(x
Matplotlib 提供以下功能: cla() # Clear axis clf() # Clear figure close() # Close a figure window 我应该什么
我在第二个轴上遇到了一个奇怪的问题...不确定我是否做错了什么。 来自 twinx example双轴代码 import numpy as np import matplotlib.pyplot as
我有两组数据需要根据时间绘制。我需要单独显示它们,并借助单选按钮(或类似的方式)一起显示它们。单选按钮代码基于 https://stackoverflow.com/a/6697555/3910296
我想在 GPL 许可下发布一个项目,但希望在接受 merge 请求之前先签署 CLA(贡献者许可协议(protocol))。 GitHub 有一些自动化解决方案(ClaHub、cla-assistan
我正在编写一个智能卡应用程序,在使用其 AID 成功选择该应用程序后,当它发送“获取处理选项”时 我收到 6E 00 作为响应 - 无效的 CLA 命令。这是发送命令和接收响应的代码的一部分: Res
我想强制 xlim 永久不变,即使在使用 Jupyter Notebook 的 matplotlib 中的 plt.cla() 之后也是如此。 data=[[0,1],[0,1]] plt.ylim(
我看过很多关于这个主题的主题。大多数人认为发送到读卡器的 CLA 是错误的。但是,我正在使用该卡的德语文档中描述的代码(Implementierungsleitfaden zur Einbindung
我是一名优秀的程序员,十分优秀!