Как построить три средних значения, которые разделяют x-значения в правильном направлении?

Поле Animal скрыто полем Dog, вы все равно можете получить доступ к полю Animal, указав его так же, как и вы.

Поведение, которое вы ожидаете, может быть достигнуто следующим образом:

public class Main{

    public static void main(String args[]){
        Animal animal = new Animal();
        Animal dog1 = new Dog();
        Dog dog2 = new Dog();

        System.out.println("Animal object name: " + animal.name);
        System.out.println("Dog1 object name: "+dog1.name);
        System.out.println("Dog2 object name: " + dog2.name);

        animal.print();
        dog1.print();
        dog2.print();
    }

}
class Animal {
    String name = "Animal";

    public void print(){
        System.out.println("I am an: "+name);
    }
}
class Dog extends Animal{
    public Dog() {
       this.name = "Dog"
    }
}
0
задан Guido 13 July 2018 в 23:17
поделиться

1 ответ

Вам просто нужно вызывать функцию вашего графика в любое время с разными значениями.

Я полагаю, что ваши avg и std векторы имеют одинаковый размер, потому что они выводятся с той же функцией extract_statistics. У вас может возникнуть проблема с вашим вектором x. Возможно, размер этого вектора не соответствует размеру векторов avg и std.

В следующем решении мы имеем три пары векторов avg и std: 50, 200, 600. Мы объединяем 3 вектора в один вектор y и e. Итак, на каждой итерации следующего цикла for мы используем один и тот же вектор x для трех разных индексов из векторов y и e. Для этого мы предполагаем, что вектор x и каждый элемент из y и e имеют одинаковый размер.

Когда мы называем что-то вроде y[:,0], например, мы нарезаем вектор y и получение всех значений первого столбца этого вектора.

times_alg_1_sparse = times_alg1['Sparse']

avg_alg1_50_sparse, std_alg1_50_sparse = extract_statistics(times_alg_1_sparse.iloc[0])
avg_alg1_200_sparse, std_alg1_200_sparse = extract_statistics(times_alg_1_sparse.iloc[1])
avg_alg1_600_sparse, std_alg1_600_sparse = extract_statistics(times_alg_1_sparse.iloc[2])

x = np.array(times_alg_1_sparse.index)
y = np.array([avg_alg1_50_sparse*1000, avg_alg1_200_sparse*1000, avg_alg1_600_sparse*1000])
e = np.array([std_alg1_50_sparse*1000, std_alg1_200_sparse*1000, std_alg1_600_sparse*1000])

colors = ['red', 'green', 'blue']    

for k in range(3):
    plt.errorbar(x, y[:,k], e[:,k], mfc=colors[k], linestyle='solid', marker='^', color=colors[k])

plt.ylim(0)
plt.show()

Вы пытаетесь использовать subplots. Что указано, если вы хотите построить на одном рисунке более одного графика.

0
ответ дан Lorran Sutter 17 August 2018 в 12:05
поделиться
  • 1
    Спасибо за ответ, это моя цель, но я не могу применить то, что вы мне предложили, из-за: IndexError: слишком много индексов для массива. Эта ошибка относится к plt.errorbar, какой параметр мог бы поднять? – Guido 14 July 2018 в 09:28
  • 2
    Он должен рассматривать массивы y [:, k] и e [:, k] Как они должны быть построены? – Guido 14 July 2018 в 09:40
  • 3
    Я не знаю точно, как работает ваша функция extract_statistics, но, вероятно, она генерирует векторы разных размеров, в то время как все ваши векторы должны быть одинаковыми. Я отредактирую свой ответ, чтобы лучше объяснить. – Lorran Sutter 15 July 2018 в 00:01
Другие вопросы по тегам:

Похожие вопросы: