我被matplotlib
图形、轴和子图之间的关系弄糊涂了。
通常,我通过观察和实验代码来解决这些问题,代码通常体现了对象模型中实体之间的结构关系,可以从工作原理的示例中推断出来。但是在matplotlib
中,我经常发现一系列令人困惑的方法来完成同样的事情,这模糊了底层结构。
例如,如果我想制作一个简单的(无子图形)日志图,以下任何一项似乎都具有完全相同的效果。
import matplotlib.pyplot as plt
# All of the following seem to have the same effect:
plt.axes().loglog()
plt.gca().loglog()
plt.loglog()
plt.gcf().gca().loglog()
# These don't work though:
# plt.gcf().axes().loglog()
# plt.gcf().loglog()
我已经尝试过文档和教程,但我还是没有这么做。
上面的每个工作示例都做了什么?它们有什么区别?为什么非工作示例失败?如果我正在编写我希望其他人(或我)能够阅读的代码,那么这些习惯用法中有一种比另一种更受欢迎吗?
请注意,我在这里的兴趣是以编程方式创建用于发布或导出的图像,而不是交互式创建图形或模拟MATLABs功能。我推测,上面的一些“捷径”与后一种场景的工作有关。
图形基本上是一个窗口或文件。如果你制作了几个单独的图形,通常的想法是弹出几个寡妇或保存几个文件。
一个轴和一个子地块在某种意义上是相同的。例如,figure
方法subplot
返回一个axis对象。每个轴对象表示要在其上打印内容的一组特定轴。每个轴上都可以绘制多个单独的数据集,但它们都将使用相同的x轴和y轴。
将绘图设为日志绘图取决于实际绘制数据所用的函数。例如,如果您有两个数组a
和b
,我想对它们进行对数绘图,我会使用:
fig=plt.figure() #Make a figure
loglog_ax=fig.subplot(111) # Make a single axis, which is the *only* subplot
loglog_ax.loglog(a,b) # Plot the data on a log-log plot
我的标准是从plt获取
如下所示:fig,ax
。子批次
fig, ax = plt.subplots(1)
ax.loglog(a, b)
我这样做是因为这样,您还可以将多个ax
对象作为一个列表,例如:
# Make a column of three figures
fig, axes = plt.subplots(3)
for ax, a, b in zip(axes, as, bs):
ax.loglog(a, b)
或者如果你做一个2乘5的网格,你会得到一个ax
对象列表,所以我通常使用轴取消列表。平面
:
# Make a 2x5 grid of figures
nrows = 2
ncols = 5
height = nrows * 4
width = ncols * 4
# Don't ask me why figsize is (width, height) instead of (height, width)....
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(width, height))
for ax, a, b in zip(axes.flat, as, bs):
ax.loglog(a, b)
我这样做是因为我有ax
对象来调整之后的外观。我通常不使用plt。gca()
内部打印功能除外。
plt。gcf()
正在获取当前图形,当您向其中添加gca()
或axes()
或loglog()
时,我相信它们创建了基础轴。我不知道为什么gcf()
-第一个东西不能与axes()
和loglog()
一起使用。因此,我的建议是坚持使用ax
对象。
编辑:已删除itertools。链
填充,交换到轴。平面
问题内容: 以下代码生成一个带有xticklabels的条形图,每个条形图居中。但是,缩放x轴,更改条形数量或更改条形宽度确实会更改标签的位置。是否存在处理该行为的通用方法? 建议和可行的解决方案: 问题答案: 因此,问题在于您只能致电。这样可以固定标签,但是刻度位置仍由来处理,在更改轴限制时会添加/删除刻度。 因此,您还需要修复刻度位置: 通过调用将替换为引擎盖下的。 然后,您可以将条居中以使其
不是Android系统的问题。 另见: 如何从Firebase android中获取所有子列表
本文向大家介绍动态设置form表单的action属性的值的简单方法,包括了动态设置form表单的action属性的值的简单方法的使用技巧和注意事项,需要的朋友参考一下 用jQuery时,可如下设置: form表单: javascript方法: 或者用单纯的javascript: 以上这篇动态设置form表单的action属性的值的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望
问题内容: 显然,我想避免将路径等硬编码到我的应用程序中,因此,我想制作一个设置文件来存储诸如字符串之类的简单内容。最简单的方法是什么?我在思考可可如何使用对象持久性的思路,但是似乎找不到任何等效的方法。 问题答案: 您可以使用通过java.util.Properties类处理的属性文件。
哪个对象包含属性?在下面的代码中(我已经导入了所需的软件包,并且正确地绘制了和图),为了设置y轴限制,我必须使用,为什么会这样?在我自己的头脑中,我会使用因为y轴属于ax对象实例。有人能解释一下为什么这是不正确的吗? 我在这里看到这个帖子: 为什么很多例子在Matplotlib/pyplot/python中使用"fig, ax=plt.subplots()" 这有助于澄清一点,但我仍然不确定。谢谢
我试图用matplotlib更改绘图的图形大小。但我得到的实际体形大小并没有随着plt中figsize设置的不同而改变。图()。我完全不明白为什么会这样。谁能帮我一下吗?下面是示例代码。我在用jupyter笔记本。非常感谢。