Как изменить цвет диаграммы рассеяния в цикле / если оператор? (Python) - PullRequest
4 голосов
/ 18 августа 2011

Я пытаюсь сделать так, чтобы, если диаграмма рассеяния для событий была выше диаграммы рассеяния диатомита, то цвет графика меняется с синего на красный.(Аналогично с синего на желтый, если не так).

Я уже некоторое время осматриваюсь, но, похоже, это не работает.

Вот код, приведенный ниже:

for line in open('C:\...'):
    line = line.split()
    y = line[9]
    if y == "END":
        break
    x = line[10]
    if x == 'END':
        break
    z = line[11]
    if z == 'END':
    break
    x0.append(float(x))
    y0.append(float(y))
    z0.append(float(z))

for line in open('C:\...'):
    line=line.split()
    c = line[0]
    a = line[1]
    b = line[2]
    a0.append(float(a))
    b0.append(float(b))
    c0.append(float(c))
##    print c0
    Tave = average(c0)
    print Tave


fig = pylab.figure() 
ax = p3.Axes3D(fig) 
Diatomite = ax.scatter(a0,b0,c0, color='green')
Events = ax.scatter(x0, z0, y0, color='b')
pyplot.show() 

for value in y0[:]:
    if value > Tave:
        ax.scatter(color = 'red')
    else:
        ax.scatter(color = 'yellow')

scatter(color=colors)

Любая помощь будет принята с благодарностью!(Обратите внимание, что я вынул путь к файлу.)

1 Ответ

5 голосов
/ 18 августа 2011

Похоже, у вас это почти есть. Сначала определите цвета, затем сделайте точечный график. Поэтому после print Tave создайте список, содержащий цвета; Я использовал списочное понимание, чтобы сделать это:

y0colors = ['red' if value > Tave else 'yellow' for value in y0]

Затем, когда вы делаете «События», установите color=y0colors, например, так:

Events = ax.scatter(x0, z0, y0, color=y0colors)

Конечно, при условии, что вы используете, ни одна из точек не будет синей. Значения y0 больше, чем Tave («красный») или нет («желтый»). Возможно, есть способ сделать это после определения точечного графика «События», но этот способ кажется более прямым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...