我正在编写一个python函数来使用python的matplotlib生成数据箱图。我需要此函数根据数据中的列数动态确定数字和子图的数量。为了使数字可读,我希望子图的最大数量为4乘4.如果有超过16个,我想根据需要填充4乘4的数字,然后用剩余部分填充最终数字。
例如,我目前拥有的数据有43列。因此,我希望此函数生成2个完整图形,每个图形包含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]])
我的计划是首先迭代'完整的子图'然后迭代剩余部分,但是这个方法产生两个相同的数字。
有人有什么建议吗?
由于
答案 0 :(得分:2)
这些数字是相同的,因为这一行
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]])