首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据数据中的列数动态生成盒形图

根据数据中的列数动态生成盒形图
EN

Stack Overflow用户
提问于 2015-07-17 11:52:08
回答 1查看 267关注 0票数 2

我正在编写python函数,使用python的matplotlib生成数据框。我需要这个函数来根据数据中的列数动态地确定数字和子图的数量。为了使数字具有可读性,我希望子图的最大数目为4×4。如果有16幅以上,我想根据需要填写4×4的数字,然后用剩余的部分填充最后的数字。

例如,我目前拥有的数据有43列。因此,我希望这个函数生成两个完整的图形,每个包含16个子图,一个部分填充的图包含其余的子图。我的问题是,我被写这样一个函数的逻辑所困扰。

我的代码:

代码语言:javascript
复制
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]])

我的计划是先迭代“完整子图”,然后再迭代剩余部分,但是这个方法生成两个相同的数字。

有人有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-17 12:20:09

数字是一样的,因为这一行

代码语言:javascript
复制
            boxplot(data[header[0:16]])

ij增加时不会改变。

代之以

代码语言:javascript
复制
            boxplot(data[header[16*i+j]])
代码语言:javascript
复制
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]])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31475222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档