- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我对 matplotlib
并不陌生,我很惭愧地承认我一直将它用作尽可能快速和轻松地获得解决方案的工具。所以我知道如何获得基本的情节、子情节和其他东西,并且有不少代码不时被重用......但我对 matplotlib
没有“深入的(呃)知识”。
最近我想我应该改变这一点并通过一些教程自己工作。但是,我仍然对 matplotlibs plt
、fig(ure)
和 ax(arr)
感到困惑。真正的区别是什么?
在大多数情况下,对于一些“quick'n'dirty”绘图,我看到人们只使用 pyplot as plt
并直接使用 plt.plot
绘图。因为我是有很多东西要经常绘制,我经常使用 f, axarr = plt.subplots()
...但大多数时候你只看到代码将数据放入 axarr
和忽略图 f
.
所以,我的问题是:什么是使用 matplotlib 的干净方式?什么时候只使用 plt
,figure
是做什么用的?子图应该只包含数据吗?还是对子图中的样式、清除情节等所有事情都是有效且良好的做法?
我希望这不是广泛的。基本上,我正在就 plt
<-> fig
<-> ax(arr)
的真正目的(以及何时/如何正确使用它们)。
也欢迎提供教程。 matplotlib 文档让我很困惑。当一个人搜索一些非常具体的东西时,比如重新调整图例、不同的绘图标记和颜色等等,官方文档确实很精确,但在我看来,一般信息并不是那么好。太多不同的例子,没有真正的目的解释......看起来或多或少像是所有可能的 API 方法和参数的大列表。
最佳答案
pyplot
是 matplotlib 中的“脚本”级 API(它与 matplotlib 一起做很多事情的最高级别 API)。它允许您以与使用 Matlab 类似的方式使用程序界面来使用 matplotlib。 pyplot
有一个“当前图形”和“当前轴”的概念,所有函数都委托(delegate)给 (@tacaswell dixit)。因此,当您使用模块 pyplot
上可用的功能时,您将绘制到“当前图形”和“当前轴”。
如果您想要“细粒度”控制您正在绘制的位置/内容,那么您应该使用面向对象的 API,使用 Figure
和 Axes
的实例。
pyplot
中可用的函数在 Axes
中具有等效方法。
来自 repo anatomy of matplotlib :
Figure
是此层次结构中的顶级容器。它是绘制所有内容的整个窗口/页面。你可以有多个独立的图形,Figure
可以包含多个Axes。但是……
大多数绘图发生在 Axes
上。轴实际上是我们绘制数据的区域以及与之相关的任何刻度/标签/等。通常我们会设置一个 Axes
并调用 subplot(将 Axes
放置在常规网格上),所以在大多数情况下,Axes
和 Subplot
是同义词。
每个 Axes
都有一个 XAxis 和一个 YAxis。这些包含刻度、刻度位置、标签等。
如果您想了解地 block 的解剖结构,可以访问 link .
关于python - 了解matplotlib : plt,图,ax(arr)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677767/
这个问题在这里已经有了答案: Unexpected result with `in` operator chaining (1 个回答) Chaining "is" operators (4 个回答)
我想知道为什么下面的代码会崩溃。 int main( ) { int arr = 1 && arr; return 0; } 但不是下面的代码 int main( ) {
什么是计算一组数字平均值的更准确方法,ARR[0]/N+ARR[1]/N...+ARR[N-1]/N 或 (ARR[0]+ARR[1]...+ARR[N-1])/N? (ARR 是一组数字,N 是该组
#include using namespace std; int main() { int arr[5] = {5, 8, 1, 3, 6}; int len = *(&arr +
在下面的代码中,是什么意思 vector avector (arr, arr + sizeof(arr) / sizeof(arr[0]) ); 在 main() 中? vector bubbleSo
我主要是这样使用的: arr.push(element) 但我见过有人这样使用: arr.push.apply(arr, element) 这两种方法有什么区别? 最佳答案 我认为在使用“列表”时更常
任务是重新排列一个数组,使 arr[i] 变成 arr[arr[i]],复杂度为 O(1)额外的空间。 例子: 2 1 3 5 4 0 变成: 3 1 5 0 4 2 我可以想到一个O(n²) 的解决
今天我来了一篇 Eric Lippert 的文章他试图澄清运算符优先级和评估顺序之间的迷思。最后有两个代码片段让我感到困惑,这是第一个片段: int[] arr = {0};
view和copy的意思是不同的,如果你有一个view,那么如果你改变1另一个也应该改变,如果你有一个副本那么改变1应该不会影响另一个 有 3 种制作 view 的方法/copy数组的 arr_2 =
这个问题在这里已经有了答案: How does *(&arr + 1) - arr give the length in elements of array arr? (3 个回答) Why are
我想将自己的值输入到 20 个大数组中,并将其复制到 2 个 10 个小数组中,然后必须打印第二个数组的值。我收到错误 ArrayIndexOutOfBoundsException 我的代码有什么问题
我是 C++ 新手。我正在尝试实现一个堆栈。我声明 arr默认构造函数中的命名变量。 但是当我编译我的代码时,我收到一条错误消息 'arr' was not declared in this scop
这个问题已经有答案了: Pointers - Difference between Array and Pointer (2 个回答) 已关闭 6 年前。 (C语言)之间有什么区别 int * a i
这个问题已经有答案了: How come an array's address is equal to its value in C? (6 个回答) 已关闭 4 年前。 这两个打印有什么区别,我在两
是一样的 char* s1[size]; 到 char** s2 = malloc(size * sizeof(char*)); 它们有什么区别吗? 最佳答案 理论上,*arr[]和**arr是不同的
我有一个字符串数组 arr[5][8] = {...} (声明了每个字符串),我试图了解 arr[3 的值是什么] - arr[2] 是什么以及它的类型是什么。我无法理解为什么地址之间的差异以字节为单
var arr = [foo,bar,xyz]; arr[arr.indexOf('bar')] = true; 在 JS 中有更简单的方法吗? 最佳答案 你可以只使用对象。 var obj = {f
这个问题在这里已经有了答案: What is the difference when we use array names instead of spread operator? (3 个答案) 关
在修改屏蔽数组中的数据时,我没想到会出现以下行为。似乎可以使用 [] 操作数修改某些值,但不是全部。但是,如果您访问它的数据属性,那么您可以修改所有内容。仅当元组中某个单元格的掩码中存在 True 值
我不明白如何确定以下元素: *(arr+1)[1] - 7 被打印出来。 **(arr+1) - 打印 4。 #include int main() { int arr[3][3]={1,2
我是一名优秀的程序员,十分优秀!