- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了一个相当奇怪的图例行为和错误栏绘图命令。我正在使用 Python xy 2.7.3.1 和 matplotlib 1.1.1
下面的代码举例说明了观察到的行为:
import pylab as P
import numpy as N
x1=N.linspace(0,6,10)
y1=N.sin(x1)
x2=N.linspace(0,6,5000)
y2=N.sin(x2)
xerr = N.repeat(0.01,10)
yerr = N.repeat(0.01,10)
#error bar caps visible in scatter dots
P.figure()
P.subplot(121)
P.title("strange error bar caps")
P.scatter(x1,y1,s=100,c="k",zorder=1)
P.errorbar(x1,y1,yerr=yerr,xerr=xerr,color="0.7",
ecolor="0.7",fmt=None, zorder=0)
P.plot(x2,y2,label="a label")
P.legend(loc="center")
P.subplot(122)
P.title("strange legend behaviour")
P.scatter(x1,y1,s=100,c="k",zorder=100)
P.errorbar(x1,y1,yerr=yerr,xerr=xerr,color="0.7",
ecolor="0.7",fmt=None, zorder=99)
P.plot(x2,y2,label="a label", zorder=101)
P.legend(loc="center")
P.show()
产生这个图:
如您所见,误差线上限覆盖了散点图。如果我足够多地增加 zorder 这不会再发生,但情节线会覆盖图例。我怀疑问题与this zorder problem有关使用 matplotlib。
快速、肮脏、hacky 的解决方案也很受欢迎。
编辑(感谢@nordev):期望的结果如下:
根据你的答案调整zorder:
P.legend(zorder=100)
--> self.legend_ = mlegend.Legend(self, handles, labels, **kwargs) 复制代码
TypeError: __init__() 得到了一个意外的关键字参数 'zorder'
P.errorbar(zorder=0)
, P.scatter(zorder=1)
, ...正如您正确建议的那样,仍然会产生相同的图,错误栏上限仍在散点上方。我相应地更正了上面的示例。最佳答案
根据您发布的代码,创建的图是正确的。 最低 zorder
的对象放在底部,最高 zorder
的对象放在上面顶部。您链接到的 zorder 问题已在 matplotlib 1.2.1 版中修复,因此您应该尽可能更新安装。
在您的第一个子图中,误差线被绘制在散点之上,因为 errorbar
是用 zorder=2
调用的,而 scatter
是使用 zorder=1
调用 - 意味着误差线将覆盖散点。
在你的第二个子图中,你用 zorder=99
调用了 errorbar
,用 zorder=100
调用了 scatter
和 plot
与 zorder=101
- 这意味着误差线将被放置在散点和线的下方。
legend
在第一个子图中显示在行的顶部,而在第二个子图中显示在同一行的顶部,这是因为您没有显式设置图例对象 zorder
值,这意味着它将使用其默认值(我认为是 5)。要更改图例 zorder,只需使用 P.legend(loc="center").set_zorder(102)
,其中 102 是所需的 zorder 值。
因此,为了产生您想要的输出,您必须相应地设置 zorder
参数。由于您没有在您的问题中描述您的所需输出,因此我很难“更正”您的代码,因为我不知道您希望以何种顺序绘制对象。
关于python - 带有图例和错误栏的奇怪 matplotlib zorder 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16770049/
有人知道让 zOrder 以不同方式处理视觉事件和鼠标事件的方法吗? 我有一个 我在 zOrder 中放置较高的元素,它稍微透明以突出显示某些内容,但它干扰了 :hover原始元素上的 css 样式。
看来 WindowsFormsHost 控件设置为显示在顶部。有什么方法可以更改其 z 顺序以允许同一窗口上的其他 WPF 控件在 WindowsFormsHost 控件顶部可见? 最佳答案 不幸的是
窗口的 z 顺序指示窗口在重叠窗口堆栈中的位置。 如果您使用双显示器,每个显示器是否都有自己的 z 顺序? 最佳答案 没有。每个显示器具有单独的 Z 顺序会导致在显示器之间移动窗口或窗口与多个显示器重
我正在尝试使用 View 翻转器为 2 个 View 之间的转换设置动画。看起来,默认情况下,ViewFlipper 将 Out 动画按 Z 顺序放置在 In 动画上方。有没有办法让传入的动画显示在传
我正在使用 WPF 弹出窗口,但它会在我桌面上的每个窗口上方弹出,即使我的应用程序已最小化也是如此。我怎样才能让它只停留在它起源的窗口上?当我的窗口在其他窗口后面时,也会发生同样的事情:弹出窗口显示在
我正在尝试使用 pyplot 的 funcanimation 为同一图中的不同对象设置动画。 它的工作方式几乎和我预期的一样,除了不同元素的显示顺序不同。所以绘图曲线、文本和图例显示在图像后面几乎看不
我有一个垂直 UIStackView 的逻辑: stackView.addArrangedSubview(v1) stackView.addArrangedSubview(v3) //later st
这是一个重现我的问题的例子: import matplotlib.pyplot as plt import numpy as np data1,data2,data3,data4 = np.rando
我有一些布局可以在 API 19: 4.2.2 上正常工作,但不能让它在 API 21: 5.0.1 上工作。 这是布局: 非常简单的东西。我只希望 textview 位于相
寻找一种在任何窗口 ZOrder 更改时得到通知的方法? Zorder 指的是窗口的分层。 0 的 zorder 在底部。我不知道还有什么其他方式可以问这个问题。 这适用于 Windows XP 或更
我需要使用 cartopy 生成 map 并在其上绘制一些数据(使用 networkx)。我能够做到,但 networkx 对象位于 map 后面。我正在尝试使用 zorder 强制图层的顺序,但是.
我有一个 Altair 图,其中多个点位于相似的 xy 位置,类似于 this plot在 Altair 教程中。由于我使用工具提示,我希望所选点上升到顶部(即增加 matplotlib 术语中的 z
下面的代码包含一个简单的网格,在网格的中间列中有一个按钮。按钮宽度(有意地)大于放置它的列。请注意,按钮的左侧部分可见,右侧部分不可见。我需要做什么才能让左右按钮部分不可见?按钮的右侧部分位于右侧网格
1) 我需要 Matplotlib 中似乎不存在的屏蔽功能。(如果情况并非如此,请告诉我)。 2) Matplotlib 具有裁剪功能,但“裁剪”出的区域使用相同的 zorder,因此渲染几个重叠的多
我正在使用 matplotlib 饼图:https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.pie.html . 我正在生成一个使用这些饼图
我正在一对双轴 (twinx) 上绘制一系列线条。我可以使用 zorder 参数控制哪些线在每个轴的“顶部”,我可以使用 Axes.set_zorder()< 设置哪个轴(作为一个整体)在顶部 功能
我使用 jquery ui 来显示菜单。在这个网页上,有一些图片,菜单显示在图片后面。 我已经试过了: .ui-menu { z-index: 9999999; } 或 #menu { z-index
我有 3 个轴,一条或多条线。由于获得了光标所在行的选择器,我尝试更改包含该行的斧头的 zorder。 精度:我在 FigureCanvasQTAgg 派生对象中 def onmove(self, e
我遇到了一个相当奇怪的图例行为和错误栏绘图命令。我正在使用 Python xy 2.7.3.1 和 matplotlib 1.1.1下面的代码举例说明了观察到的行为: import pylab as
在将具有不同 y 轴的多个错误栏绘制到一个子图中时,我目前正在处理 matplotlib 的一些奇怪行为。 这样做时,对应于第二个误差线图的网格总是与第一个误差线图重叠。使用 zorder 选项,我只
我是一名优秀的程序员,十分优秀!