小编Hos*_*hoi的帖子

在2d子图上循环,好像它是1-D

我试图使用子图绘制许多数据,我没有遇到麻烦,但我想知道是否有一种方便的方法来做到这一点.

下面是示例代码.

import numpy as np    
import math 
import matplotlib.pyplot as plt

quantities=["sam_mvir","mvir","rvir","rs","vrms","vmax"
,"jx","jy","jz","spin","m200b","m200c","m500c","m2500c"
,"xoff","voff","btoc","ctoa","ax","ay","az"]

# len(quantities) = 21, just to make the second loop expression 
# shorter in this post.

ncol = 5
nrow = math.ceil(21 / ncol)

fig, axes = plt.subplots(nrows = nrow, ncols=ncol, figsize=(8,6))

for i in range(nrow):
    for j in range(((21-i*5)>5)*5 + ((21-i*5)<5)*(21%5)):
        axes[i, j].plot(tree[quantities[i*ncol + j]]) 
        axes[i, j].set_title(quantities[i*ncol + j])
Run Code Online (Sandbox Code Playgroud)

此代码循环遍历2D子阵列,并在第21个图中停止,留下4个面板.我的问题是,有没有内置的方法来完成这项任务?例如,制作2D子图阵列并将阵列"展平"为1D,然后在1D阵列上循环0到20.

第二个范围()中的表达式非常难看.我不认为我会使用这段代码.我认为琐碎的方法是计算图表的数量,如果计数> 21则中断.但我只是想知道是否有更好的(或奇特的)方式.

python matplotlib flatten subplot

7
推荐指数
2
解决办法
3210
查看次数

matplotlib散射边而不指定edgecolor

现在看来,默认的散点图标记是没有边的实心圆.我想要一个带边缘的标记,并且facecolor ="none".但是如果facecolor ="none"但未指定edgecolor,则绘图为空.我希望标记有多种不同的颜色,但不关心哪一种颜色.

我怎样才能"打开"边缘?

python scatter matplotlib

6
推荐指数
1
解决办法
1775
查看次数

合并 VSCode jupyter notebook 中的单元格?

我发现最近更新的对 VSCode 的 Jupyter notebook 支持非常有用。

但是,我不知道如何合并单元格。

有可能吗?或者这个功能会在不久的将来登陆吗?

visual-studio-code jupyter-notebook

6
推荐指数
3
解决办法
2278
查看次数

twinx 轴的 matplotlib axes.clear() 不清除第二个 y 轴标签

我有更新的 twinx 轴的问题。在下面的代码中,我希望 ax_hist.clear() 完全清除数据、刻度和轴标签。但是当我再次在相同的轴上绘图时,前一个 ax_hist.hist() 的第二个 y 轴标签仍然存在。如何删除旧的 y 轴标签?

我已经用 TkAgg 和 Qt5Agg 进行了测试并得到了相同的结果。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

d1 = np.random.random(100)
d2 = np.random.random(1000)

ax.plot(d1)
ax_hist = ax.twinx()
ax_hist.hist(d1)

ax.clear()
ax_hist.clear()
ax.plot(d2)
ax_hist = ax.twinx()
ax_hist.hist(d2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

5
推荐指数
1
解决办法
2757
查看次数

将ipython笔记本嵌入sphinx文档

我正在为自己的项目编写API文档。而且我发现这个很酷的文档(yt项目)直接使用ipython notebook给出了示例。当我查看他们关于bitbucket的文档存储库时,一个相关的rst看起来很简单:

.. notebook:: An_example_notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

但是,当然,它对我不起作用。我不确定“笔记本”是否为固有块类型。也许“笔记本”块需要外部包装。实际上,当我在sphinx文档中搜索“ notebook”时,结果为零。

如果我可以直接使用笔记本(不进行转换)给出示例,那将使生活更加轻松。但是我不知道该如何实现。

python python-sphinx ipython-notebook

5
推荐指数
1
解决办法
2316
查看次数

numpy中结构化数组的元素总和

我想知道是否有可能对两个形状相同的结构化 numpy 数组执行元素求和(或其他操作)。

arr1 = np.array([[1,2,3],[2,3,4]], dtype=[("x", "f8"),("y", "f8")])
arr2 = np.array([[5,4,3],[9,6,4]], dtype=[("x", "f8"),("y", "f8")])
arr3 = np.sum(arr1, arr2)
Run Code Online (Sandbox Code Playgroud)

说“ufunc 'add' 不包含签名匹配类型 dtype([('x', '

如果这是不可能的,那么理解为什么在 numpy 中实现它是不可能或不切实际的将会很好。

python numpy numpy-ufunc numpy-ndarray

5
推荐指数
1
解决办法
1283
查看次数

matplotlib 从轴获取可映射的颜色条

我想添加一个颜色条,而没有轴在绘制事物时返回的内容。有时我将事物绘制到函数内的轴上,该轴不返回任何内容。有没有办法从预先完成绘图的轴获取颜色条的可映射性?我相信有足够的关于绑定到轴本身的颜色图和颜色范围的信息。

我希望 tp 做这样的事情:

def plot_something(ax):
    ax.plot( np.random.random(10), np.random.random(10), c= np.random.random(10))

fig, axs = plt.subplots(2)
plot_something(axs[0])
plot_something(axs[1])

mappable = axs[0].get_mappable() # a hypothetical method I want to have.

fig.colorbar(mappable)
plt.show()
Run Code Online (Sandbox Code Playgroud)

编辑

对可能重复的答案可以部分解决我在代码片段中给出的问题。然而,这个问题更多的是关于从轴检索一般可映射对象,根据 Diziet Asahi 的说法,这似乎是不可能的。

python matplotlib

3
推荐指数
1
解决办法
3127
查看次数