我不能把我的头围绕轴参数,它包含什么以及如何使用它来制作子情节。
如果有人能解释一下下面的例子,我将不胜感激
fig, axes = plt.subplots(nrows=3, ncols=4, figsize=(15, 10))
for idx, feature in enumerate(df.columns[:-1]):
df.plot(feature, "cnt", subplots=True, kind="scatter", ax=axes[idx / 4, idx % 4])
更具体地说,以下是我理解的部分(至少我认为我理解)
这是我不明白的
代码中的axes
对象是matplotlibAxes
对象的2D Numpy数组。由于调用subplots()
需要3行4列,因此数组将是3乘4。对数组进行索引,如axes[r, c]
,会得到对应于rowr
和列c
的Axes
对象,并且可以将该对象作为ax
关键字传递绘图方法的参数,以使绘图显示在该轴上。例如,如果你想在第二行和第二列中绘制一些东西,你可以调用图(...,ax=axes[1,1])
。
代码使用[idx/4, idx%4]
作为将索引(从0到11的数字)转换为3×4网格中位置的一种方式。试着用idx
依次设置为0到11的每个值来评估这个表达式,你会看到它是如何工作的。
关于数组索引为[idx/4, idx%4]
的最后一个问题:
其思想是同时在所有子地块和所有数据帧列上循环。问题是轴数组是二维的,而列数组是一维的。因此,需要决定循环哪些维度,并将循环索引/索引映射到其他维度。
直观的方法是使用两个循环
for i in range(axes.shape[0]):
for j in range(axes.shape[1]):
df.plot(df.columns[i*axes.shape[0]+j], "cnt", ... , ax=axes[i,j])
在这里,i*axes.shape[0]j
将Numpy数组的二维映射到列列表的单个维度。
在问题的示例中,循环位于列上方,这意味着我们必须以某种方式将一维索引映射到二维。这就是[idx/4,idx%4]
所做的。。或者应该这样做。它只能在Python2中工作。为了使它更易于理解和保存版本,实际上应该使用[idx//4,idx%4]
。/
说明使用整数除法。因此,对于前4个idx值(0,1,2,3),idx//4
是0,对于下一组4个值,它是1,依此类推<代码>idx%4计算索引模4。所以(0,1,2,3)被映射到(0,1,2,3),然后(4,5,6,7)被再次映射到(0,1,2,3),以此类推。
使用单个循环的替代html" target="_blank">解决方案是展平轴数组:
for idx, feature in enumerate(df.columns[:-1]):
df.plot(feature, "cnt", ... , ax=axes.flatten()[idx])
或者可能是最像蟒蛇的
for ax, feature in zip(axes.flatten(), df.columns[:-1]):
df.plot(feature, "cnt", ... , ax=ax)
问题内容: 我是Android开发的初学者,我正在上课。我的职责是将应用程序中的JSON数据显示为文本和图形。我正在使用Retrofit 2在一个活动中将其显示为文本,但是我在使用图形时遇到了问题,我不知道该怎么做(我仍在学习,到目前为止我所做的一切都是在帮助下来自教程)。 数据如下所示(这是一个示例): 我已经找到了,但是我不确定下一步该怎么做。我应该用数据制作两个数组列表(如果答案是,怎么做?
本文向大家介绍Python使用plt.boxplot() 参数绘制箱线图,包括了Python使用plt.boxplot() 参数绘制箱线图的使用技巧和注意事项,需要的朋友参考一下 Python 绘制箱线图主要用 matplotlib 库里 pyplot 模块里的 boxplot() 函数。 plt.boxplot() 参数详解 1、示例1 代码 图形 2、 示例 2 代码 图形 以上就是本文的全部
我只想从JavaFX图表API生成一个图表图像。我不想显示应用程序窗口,也不想启动应用程序(如果没有必要)。 在start方法内部,我实际上需要访问外部数据以构建系列数据,但是似乎没有办法从start方法访问外部数据,如果我将数据存储在成员变量内部,则当开始叫做。我其实不在乎舞台和场景对象,只要图表图像可以渲染,我应该如何解决问题?我想建立一个可以用输入数据调用的API,用数据绘制图表,并返回文件
问题内容: 我必须使用pdfbox绘制一个饼图。 令数据为: 主题分数百分比累计分数 Sub-1 80 80 80 Sub-2 70 70150 Sub-3 65 65215 Sub-4 90 90305 Sub-5 55 55360 令半径和中心为100像素和(250,400)。 让我们取平行于x轴的初始线。 绘图的初始线条语句将为: contentStream.drawLine(250,400
我必须用pdfbox绘制一个饼图。 让数据是: 设半径和中心为100像素和(250,400)。 让我们取平行于x轴的初始线 绘制初始行语句将为: contentStream。抽绳(250400350400); 我坚持: a)在距离初始线一定程度的圆圈上找到点的x, y坐标,以绘制半径 b)使用贝塞尔曲线在两点之间绘制圆弧。 任何帮助解决问题将不胜感激!
我只是试图用DrawOval()方法画圆,当我运行程序时,它只显示小正方形。我试图将构造函数添加到Surface类,但它不起作用。这是我制作的代码: