如何把这些代码整理成一种更具python风格的方式?

2024-05-18 08:44:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码为我的数据绘制了一个方框和胡须图:

def make_labels(ax, boxplot):
    iqr = boxplot['boxes'][0]
    caps = boxplot['caps']
    med = boxplot['medians'][0]
    fly = boxplot['fliers'][0]
    xpos = med.get_xdata()
    xoff = 0.1 * (xpos[1] - xpos[0])
    xlabel = xpos[1] + xoff
    median = med.get_ydata()[1]
    pc25 = iqr.get_ydata().min()
    pc75 = iqr.get_ydata().max()
    capbottom = caps[0].get_ydata()[0]
    captop = caps[1].get_ydata()[0]
    ax.text(xlabel, median, 'Median = {:6.3g}'.format(median), va='center')
    ax.text(xlabel, pc25, '25th percentile = {:6.3g}'.format(pc25), va='center')
    ax.text(xlabel, pc75, '75th percentile = {:6.3g}'.format(pc75), va='center')
    ax.text(xlabel, capbottom, 'Bottom cap = {:6.3g}'.format(capbottom), va='center')
    ax.text(xlabel, captop, 'Top cap = {:6.3g}'.format(captop), va='center')
    for flier in fly.get_ydata():
        ax.text(1 + xoff, flier, 'Flier = {:6.3g}'.format(flier), va='center')  

这给了我以下图表: enter image description here

现在,我想做的是抓住所有的'传单'点,我们可以看到在图表中,使它成为一个列表,为此,我做了以下工作:

fliers_data = []    
def boxplots(boxplot):
    iqr = boxplot['boxes'][0]
    fly = boxplot['fliers'][0]
    pc25 = iqr.get_ydata().min()
    pc75 = iqr.get_ydata().max()
    inter_quart_range = pc75 - pc25
    max_q3 = pc75 + 1.5*inter_quart_range
    min_q1 = pc25 - 1.5*inter_quart_range   
    for flier in fly.get_ydata():
        if (flier > max_q3):
            fliers_data.append(flier)
        elif (flier < min_q1):
            fliers_data.append(flier)

现在,我有两个问题:

  1. 在这两个函数中,有几行是相似的。有没有一种方法可以定义它们一次,然后在两个函数中使用它们
  2. 第二个功能是否可以更有效地编辑或整理

Tags: textformatgetcapsaxcenterflierva
1条回答
网友
1楼 · 发布于 2024-05-18 08:44:56

我认为它非常简洁,我唯一能建议的是函数不同部分之间的空格,也许还有一些引号来告诉阅读每个部分的人是做什么的

像这样的事情,例如:

def myfunction(x):

# checking if x equals 10
    if x == 10:
        return True

# if equals 0 return string
    elif x == 0:
        return "equals zero"

# else return false
    else:
        return False

另外,我认为您可以找到任何在两个函数(比如,在代码的最开始)之前在函数外部相同的变量,它们应该仍然可以在函数中访问

相关问题 更多 >