Tôi sử dụng Plotly để vẽ dữ liệu của mình bằng cách sử dụng chức năng này:
data_t = []
for mac, dico_data in dict_info.items[]:
data_t.append[go.Scatter[ x= dico_data["time"], y= dico_data['val'], name=mac ]]
print [data_t]
data = data_t
offline.plot[data_t]
Tôi cần sử dụng một tập hợp các điểm dữ liệu từ biểu đồ để tìm đạo hàm và vẽ nó. Tuy nhiên tôi không tìm thấy cách làm điều đó? Đây là một ví dụ về dữ liệu của tôi:
[Scatter[{
'name': '14:15:92:cc:00:00:00:01',
'x': [707, 1212, 1616, 1818, 2020, 2121, 2323, 2424, 2525, 6969, 11009, 11716,
12019, 16059, 16564, 19493, 20099, 23533, 23836, 25149, 29896, 43127,
45147, 45753, 55045, 66761, 66862, 77467, 81204, 82921, 92718, 104434],
'y': [1539071748.0, 1539071752.0, 1539071755.0, 1539071757.0, 1539071759.0,
1539071760.0, 1539071764.0, 1539071765.0, 1539071768.0, 1539071872.0,
1539071979.0, 1539071998.0, 1539072006.0, 1539072123.0, 1539072137.0,
1539072226.0, 1539072250.0, 1539072386.0, 1539072398.0, 1539072450.0,
1539072637.0, 1539073158.0, 1539073243.0, 1539073268.0, 1539073615.0,
1539074097.0, 1539074101.0, 1539074533.0, 1539074691.0, 1539074763.0,
1539075159.0, 1539075623.0]
}]]
[Scatter[{
'name': '14:15:92:cc:00:00:00:01',
'x': [707, 1212, 1616, 1818, 2020, 2121, 2323, 2424, 2525, 6969, 11009, 11716,
12019, 16059, 16564, 19493, 20099, 23533, 23836, 25149, 29896, 43127,
45147, 45753, 55045, 66761, 66862, 77467, 81204, 82921, 92718, 104434],
'y': [1539071748.0, 1539071752.0, 1539071755.0, 1539071757.0, 1539071759.0,
1539071760.0, 1539071764.0, 1539071765.0, 1539071768.0, 1539071872.0,
1539071979.0, 1539071998.0, 1539072006.0, 1539072123.0, 1539072137.0,
1539072226.0, 1539072250.0, 1539072386.0, 1539072398.0, 1539072450.0,
1539072637.0, 1539073158.0, 1539073243.0, 1539073268.0, 1539073615.0,
1539074097.0, 1539074101.0, 1539074533.0, 1539074691.0, 1539074763.0,
1539075159.0, 1539075623.0]
}]
Có ít nhất một vài cách để tính toán các dẫn xuất trong Python. Có một gói tượng trưng, được gọi là Sympy, có thể cho bạn biết rằng công thức cho đạo hàm của chức năng của bạn là $ f '[x] = 3x^2-2 $. Tất nhiên, thật dễ dàng để vẽ nó từ đó. Tuy nhiên, đây là một lớp trong các phương thức số, chúng ta hãy cố gắng sử dụng SCIPY. Có một chức năng cho sự khác biệt về số trong mô -đun scipy.misc
. Hãy nhập nó, cùng với các công cụ đồ họa tiêu chuẩn:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from scipy.misc import derivative
Bây giờ, hãy xác định $ f $ và sử dụng derivative
để tính toán $ f '[1] $, có giá trị chính xác là $ 1 $.
def f[x]: return x**3-2*x
derivative[f,1,dx=0.0001]
#Out: 1.0000000099996686
Trông khá tốt. Thuật ngữ
[Scatter[{
'name': '14:15:92:cc:00:00:00:01',
'x': [707, 1212, 1616, 1818, 2020, 2121, 2323, 2424, 2525, 6969, 11009, 11716,
12019, 16059, 16564, 19493, 20099, 23533, 23836, 25149, 29896, 43127,
45147, 45753, 55045, 66761, 66862, 77467, 81204, 82921, 92718, 104434],
'y': [1539071748.0, 1539071752.0, 1539071755.0, 1539071757.0, 1539071759.0,
1539071760.0, 1539071764.0, 1539071765.0, 1539071768.0, 1539071872.0,
1539071979.0, 1539071998.0, 1539072006.0, 1539072123.0, 1539072137.0,
1539072226.0, 1539072250.0, 1539072386.0, 1539072398.0, 1539072450.0,
1539072637.0, 1539073158.0, 1539073243.0, 1539073268.0, 1539073615.0,
1539074097.0, 1539074101.0, 1539074533.0, 1539074691.0, 1539074763.0,
1539075159.0, 1539075623.0]
}]]
[Scatter[{
'name': '14:15:92:cc:00:00:00:01',
'x': [707, 1212, 1616, 1818, 2020, 2121, 2323, 2424, 2525, 6969, 11009, 11716,
12019, 16059, 16564, 19493, 20099, 23533, 23836, 25149, 29896, 43127,
45147, 45753, 55045, 66761, 66862, 77467, 81204, 82921, 92718, 104434],
'y': [1539071748.0, 1539071752.0, 1539071755.0, 1539071757.0, 1539071759.0,
1539071760.0, 1539071764.0, 1539071765.0, 1539071768.0, 1539071872.0,
1539071979.0, 1539071998.0, 1539072006.0, 1539072123.0, 1539072137.0,
1539072226.0, 1539072250.0, 1539072386.0, 1539072398.0, 1539072450.0,
1539072637.0, 1539073158.0, 1539073243.0, 1539073268.0, 1539073615.0,
1539074097.0, 1539074101.0, 1539074533.0, 1539074691.0, 1539074763.0,
1539075159.0, 1539075623.0]
}]
0 là một tham số liên quan đến quá trình xấp xỉ. Chúng ta sẽ tìm hiểu thêm về điều đó khi chúng ta thảo luận về sự khác biệt.Bây giờ, nếu chúng ta muốn vẽ đồ thị $ f $ và $ f '$ cùng nhau trong một phạm vi bị hạn chế, chúng ta có thể làm như vậy như sau:
plt.plot[xs,f[xs]]
plt.plot[xs,derivative[f,xs, dx=0.001]]
ax = plt.gca[]
ax.set_ylim[-5,5]
plt.savefig['temp.png']
Lưu ý rằng lệnh
[Scatter[{
'name': '14:15:92:cc:00:00:00:01',
'x': [707, 1212, 1616, 1818, 2020, 2121, 2323, 2424, 2525, 6969, 11009, 11716,
12019, 16059, 16564, 19493, 20099, 23533, 23836, 25149, 29896, 43127,
45147, 45753, 55045, 66761, 66862, 77467, 81204, 82921, 92718, 104434],
'y': [1539071748.0, 1539071752.0, 1539071755.0, 1539071757.0, 1539071759.0,
1539071760.0, 1539071764.0, 1539071765.0, 1539071768.0, 1539071872.0,
1539071979.0, 1539071998.0, 1539072006.0, 1539072123.0, 1539072137.0,
1539072226.0, 1539072250.0, 1539072386.0, 1539072398.0, 1539072450.0,
1539072637.0, 1539073158.0, 1539073243.0, 1539073268.0, 1539073615.0,
1539074097.0, 1539074101.0, 1539074533.0, 1539074691.0, 1539074763.0,
1539075159.0, 1539075623.0]
}]]
[Scatter[{
'name': '14:15:92:cc:00:00:00:01',
'x': [707, 1212, 1616, 1818, 2020, 2121, 2323, 2424, 2525, 6969, 11009, 11716,
12019, 16059, 16564, 19493, 20099, 23533, 23836, 25149, 29896, 43127,
45147, 45753, 55045, 66761, 66862, 77467, 81204, 82921, 92718, 104434],
'y': [1539071748.0, 1539071752.0, 1539071755.0, 1539071757.0, 1539071759.0,
1539071760.0, 1539071764.0, 1539071765.0, 1539071768.0, 1539071872.0,
1539071979.0, 1539071998.0, 1539072006.0, 1539072123.0, 1539072137.0,
1539072226.0, 1539072250.0, 1539072386.0, 1539072398.0, 1539072450.0,
1539072637.0, 1539073158.0, 1539073243.0, 1539073268.0, 1539073615.0,
1539074097.0, 1539074101.0, 1539074533.0, 1539074691.0, 1539074763.0,
1539075159.0, 1539075623.0]
}]
1 đã tạo một tệp PNG trên máy tính xách tay của tôi mà tôi có thể tải lên ở đây! Để tính toán đạo hàm của hàm F tại một điểm X đã cho, một giải pháp có python là sử dụng hàm scipy gọi là đạo hàm. Hãy xem xét chức năng sau: $ f [x] = x^2 $ Quand x = 2.
Đầu tiên, mô -đun Misc được nhập với lệnh "từ SCIPY MISC
def fonction[x]:
return x*x
Để có được giá trị của đạo hàm của F tại một x đã cho, hàm misc.derivative [fonction, x] đã cho sau đó có thể được sử dụng.
Sau đó, có thể mở rộng ví dụ đơn giản này và vẽ kết quả bằng cách sử dụng matplotlib:
from pylab import *
from scipy import misc
ax = subplot[111]
def fonction[x]:
return 3*x*x+2*x+1
x = arange[-2.0, 2.0, 0.01]
y = fonction[x]
plot[x, y,'r-']
yp = misc.derivative[fonction, x]
plot[x, yp,'b-']
grid[True]
ax.spines['left'].set_position['zero']
ax.spines['right'].set_color['none']
ax.spines['bottom'].set_position['zero']
ax.spines['top'].set_color['none']
text[-0.75, 6.0,
r'$f[x]=3x^2+2x+1$', horizontalalignment='center',
fontsize=18,color='red']
text[-1.0, -8.0,
r"$f'[x]=6x+2$", horizontalalignment='center',
fontsize=18,color='blue']
show[]