Как изменить значения сюжета в Python

Вы имели в виду это?

$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
    $("img").fadeIn("fast").attr('src',tmppath);       
});

1
задан Brown 24 February 2019 в 17:29
поделиться

1 ответ

Чтобы добавить промежуточные точки к вашим данным, вам нужно использовать некоторую форму интерполяции . В numpy есть np.interp, который обеспечивает простой интерфейс для предварительной линейной интерполяции.

Ниже приведен простой пример.

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,10,20,30])
y = np.array([1,2,3,4,5,6])

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.plot(x, y, '.', ms=10)

# Create a continuous range for the x axis from first to last value
xc = np.arange(x[0], x[-1])
yi = np.interp(xc, x, y)

ax.plot(xc, yi, 'x', color='r')

Это дает следующий сюжет.

interpolated data and original data

Входные данные показаны в виде синих кружков, интерполированные в виде красных крестиков.

Ключевым моментом, на который следует обратить внимание, является то, что для интерполяции ваших данных вам необходимо сначала вычислить ось интерполированных данных (например, регулярный диапазон значений от min..max). Затем вы передаете эту новую ось вместе со своими текущими x и текущими y значениями в np.interp. Результатом является новый набор y значений в интерполированных x местоположениях.

Используя ваш пример данных / скрипта, вы можете сделать -

import numpy as np
import matplotlib.pyplot as plt

protocols = {}

types = {"data1": "data1_final.csv"}

for protname, fname in types.items():
    col_time,col_window = np.loadtxt(fname,delimiter=',').T
    trailing_window = col_window[:-1] 
    leading_window  = col_window[1:]  
    decreasing_inds = np.where(leading_window < trailing_window)[0]
    quotient = leading_window[decreasing_inds]/trailing_window[decreasing_inds]
    quotient_times = col_time[decreasing_inds]

    protocols[protname] = {
        "col_time": col_time,
        "col_window": col_window,
        "quotient_times": quotient_times,
        "quotient": quotient,
    }

    plt.figure(); plt.clf()

    plt.plot(quotient_times,quotient, ".", label=protname, color="blue")

    # Interpolate, along an axis from min..max quotient_times
    xc = np.arange(quotient_times[0], quotient_times[-1], 0.5)
    quotienti = np.interp(xc, quotient_times, quotient)

    plt.plot(xc, quotienti, 'x', color='r')    

    plt.ylim(0, 1.0001)
    plt.title(protname)
    plt.xlabel("time")
    plt.ylabel("quotient")
    plt.legend()
    plt.show()

, что приводит к следующему графику.

[Тысяча сто двадцать-два] interp with provided data [тысяча сто двадцать-дв]
0
ответ дан mfitzp 24 February 2019 в 17:29
поделиться
Другие вопросы по тегам:

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