我正在编写python函数,使用python的matplotlib生成数据框。我需要这个函数来根据数据中的列数动态地确定数字和子图的数量。为了使数字具有可读性,我希望子图的最大数目为4×4。如果有16幅以上,我想根据需要填写4×4的数字,然后用剩余的部分填充最后的数字。
例如,我目前拥有的数据有43列。因此,我希望这个函数生成两个完整的图形,每个包含16个子图,一个部分填充的图包含其余的子图。我的问题是,我被写这样一个函数的逻辑所困扰。
我的代码:
import matplotlib.pyplot as plt
def boxplot_data(self,parameters_file):
data = read_csv(parameters_file)
header = data.keys()
number_of_full_subplots = len(header)/16
remainder = len(header)-(16*number_of_full_subplots)
for i in range(0,number_of_full_subplots):
plt.figure(i)
for j in range(0,16):
plt.subplot(4,4,j)
boxplot(data[header[0:16]])我的计划是先迭代“完整子图”,然后再迭代剩余部分,但是这个方法生成两个相同的数字。
有人有什么建议吗?
谢谢
发布于 2015-07-17 12:20:09
数字是一样的,因为这一行
boxplot(data[header[0:16]])当i和j增加时不会改变。
代之以
boxplot(data[header[16*i+j]])import matplotlib.pyplot as plt
def boxplot_data(self, parameters_file):
data = read_csv(parameters_file)
header = data.keys()
number_of_full_subplots = len(header)/16
for i in range(number_of_full_subplots):
plt.figure(i)
for j in range(16):
plt.subplot(4, 4, j)
boxplot(data[header[16*i+j]])https://stackoverflow.com/questions/31475222
复制相似问题