Python 将子地块映射到matplotlib中的轴
我想在matplotlib中有一个3乘3的子图。从这个代码开始,如何为每个子批次自动设置Python 将子地块映射到matplotlib中的轴,python,matplotlib,Python,Matplotlib,我想在matplotlib中有一个3乘3的子图。从这个代码开始,如何为每个子批次自动设置行数和列数的值 import matplotlib.pyplot as plt import numpy as np fig, axes = plt.subplots(ncols=3, nrows=3, figsize=(15, 15)) for i in range(9): data = np.loadtxt('data_%d.txt' %i)
行数
和列数
的值
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(ncols=3, nrows=3, figsize=(15, 15))
for i in range(9):
data = np.loadtxt('data_%d.txt' %i)
axes[row_number][column_number].plot(data)
最简单的方法是枚举轴的展平阵列:
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(ncols=3, nrows=3, figsize=(15, 15))
for i, ax in enuermate(axes.flat):
data = np.loadtxt('data_%d.txt' %i)
ax.plot(data)
也许更普遍的做法是将文件对象全局化,并将它们映射到seaborn FaceGrid。这将允许您处理任意数量的文件,而无需计算轴栅格需要多少行。因为我不知道你的数据是什么样子,所以我假设了一些列名
从pathlib导入路径
从matplotlib导入pyplot
进口大熊猫
进口海运
datadir=路径(“~/location/of/your/data”)
data=pandas.concat([
pandas.read_csv(f,sep='\s+',names=['ydata'])。赋值(source=str(f.name))
对于datadir.glob('data.*.txt')中的f
],忽略_index=True)
fg=seaborn.FacetGrid(数据=data,col='source',col\u wrap=3)
fg.map(pyplot.plot,y='ydata')
最简单的方法是枚举轴的扁平阵列:
import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(ncols=3, nrows=3, figsize=(15, 15))
for i, ax in enuermate(axes.flat):
data = np.loadtxt('data_%d.txt' %i)
ax.plot(data)
也许更普遍的做法是将文件对象全局化,并将它们映射到seaborn FaceGrid。这将允许您处理任意数量的文件,而无需计算轴栅格需要多少行。因为我不知道你的数据是什么样子,所以我假设了一些列名
从pathlib导入路径
从matplotlib导入pyplot
进口大熊猫
进口海运
datadir=路径(“~/location/of/your/data”)
data=pandas.concat([
pandas.read_csv(f,sep='\s+',names=['ydata'])。赋值(source=str(f.name))
对于datadir.glob('data.*.txt')中的f
],忽略_index=True)
fg=seaborn.FacetGrid(数据=data,col='source',col\u wrap=3)
fg.map(pyplot.plot,y='ydata')
不确定这是否是你的意思
不确定这是否是你的意思
对于枚举(axes.flat)中的i,ax
:@PaulH:我不知道这是如何工作的,但这确实是一个很好的解决方案!在循环中打印i
和ax
的值,在enumerate(axes.flat)中,i和ax的值将变得清晰。
:@PaulH:我不知道这是如何工作的,但这确实是一个很好的解决方案!在循环中打印i
和ax
的值,最好直接迭代轴,这样就不必知道有多少个。最好直接迭代轴,这样就不必知道有多少个。