matplotlib图形填充轴上方和下方的2种颜色

时间:2017-04-14 16:54:20

标签: python matplotlib

我的线图部分位于0的x轴上方和下方。 如何为绿线上方的所有区域着色,以及红色下方的所有区域? 这是代码:

hydropathy_dict = {"I":-0.528, 
        "L":-0.342,
        "F":-0.370,
        "V":-0.308,
        "M":-0.324,
        "P":-0.322,
        "W": -0.270,
        "H": 2.029,
        "T": 0.853,
        "E": 3.173,
        "Q": 2.176,
        "C": 0.081,
        "Y": 1.677,
        "A":-0.495,
        "S": 0.936,
        "N": 2.354,
        "D": 9.573,
        "R": 4.383,
        "G": 0.386,
        "K": 2.101
        }
    seq = 'CHCRRSCYSTEYSYGTCTVMGINHRFCC'
    hydropathy_list = []
    plot_x_axis = []
    for aa in seq:
        hydropathy_list.append(hydropathy_dict[aa])
    print(acc,hydropathy_list)
    for i in range(len(hydropathy_list)):
        plot_x_axis.append(i)

    plt.plot(plot_x_axis,hydropathy_list)
    plt.plot([0,len(hydropathy_list)],[0,0])
    plt.show()

3 个答案:

答案 0 :(得分:2)

试试这个:

ynew

with interpolated points

修改

(回应评论中的问题)

{{1}}内的语句{{1}}需要{{1}}作为一个numpy数组(简单列表不会起作用)。

Scipy.interpolate()用于沿曲线获得更多点,因此,颜色完全填充目标区域。

使用原始点,结果如下所示:

with original points

答案 1 :(得分:1)

看看matplotlib fill-between demo。这肯定会回答你的问题。

但是,据说你的代码没有显示任何数字定义,这使得这更难。通常您会执行以下操作:

fig, ax = plt.figure()
ax.plot(plot_x_axis, line_1)
ax.plot(plot_x_axis, line_2)
ax.fill_between(plot_x_axis, line_1, line_2, color='r')
ax.fill_between(plot_x_axis, line_2, line_1, color='g')

答案 2 :(得分:0)

使用以下格式:

import matplotlib.pyplot as plt

x = range(10)
plt.fill_between(x,0,100,color='red')
plt.fill_between(x,0,-100,color='blue')

plt.show()