我试图使用子图绘制许多数据,我没有遇到麻烦,但我想知道是否有一种方便的方法来做到这一点.
下面是示例代码.
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则中断.但我只是想知道是否有更好的(或奇特的)方式.
现在看来,默认的散点图标记是没有边的实心圆.我想要一个带边缘的标记,并且facecolor ="none".但是如果facecolor ="none"但未指定edgecolor,则绘图为空.我希望标记有多种不同的颜色,但不关心哪一种颜色.
我怎样才能"打开"边缘?
我发现最近更新的对 VSCode 的 Jupyter notebook 支持非常有用。
但是,我不知道如何合并单元格。
有可能吗?或者这个功能会在不久的将来登陆吗?
我有更新的 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) 我正在为自己的项目编写API文档。而且我发现这个很酷的文档(yt项目)直接使用ipython notebook给出了示例。当我查看他们关于bitbucket的文档存储库时,一个相关的rst看起来很简单:
.. notebook:: An_example_notebook.ipynb
Run Code Online (Sandbox Code Playgroud)
但是,当然,它对我不起作用。我不确定“笔记本”是否为固有块类型。也许“笔记本”块需要外部包装。实际上,当我在sphinx文档中搜索“ notebook”时,结果为零。
如果我可以直接使用笔记本(不进行转换)给出示例,那将使生活更加轻松。但是我不知道该如何实现。
我想知道是否有可能对两个形状相同的结构化 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 中实现它是不可能或不切实际的将会很好。
我想添加一个颜色条,而没有轴在绘制事物时返回的内容。有时我将事物绘制到函数内的轴上,该轴不返回任何内容。有没有办法从预先完成绘图的轴获取颜色条的可映射性?我相信有足够的关于绑定到轴本身的颜色图和颜色范围的信息。
我希望 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 的说法,这似乎是不可能的。