Может ли кто-нибудь помочь мне с моим проектом?Я хотел бы сохранить данные из нескольких датчиков температуры через регистратор данных в файл, а затем проанализировать их с помощью программы Python.Это моя проблема.После обработки данных создайте интерактивную трехмерную карту, которая использует измерения датчиков в качестве градации цвета.
Заранее извините, если я что-то пропустил или не предоставил достаточно информации.Это мой первый вопрос, который я задаю здесь.Я не работал с Python раньше, поэтому я все еще "нуб".
В приложении у меня есть текущий код.Я надеюсь, что это очевидно, что я хочу, но ошибка, которую я получаю, когда хочу использовать данные в файле .txt для RGB / RGBA:
10., 20., 30., 40., 50., 60., 50., 60., 50., 40., 30., 20., 10. -> Недопустимый аргумент RGBA: nan или, если он у меня есть, преобразовать в массив Недопустимый аргумент RGBA: 0.0
Я обнаружил, что значения RGB можно обрабатывать только в диапазоне от 0,0 до 1,0, но мой «цветной» массив был в порядке (см. Код)
Я не вижу ошибки.Я надеюсь, что кто-то может помочь.Заранее спасибо.
/ Минимальный: (где может быть ошибка)
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D, get_test_data
from matplotlib import cm
import numpy as np
fig = plt.figure(figsize=plt.figaspect(1))
ax = fig.add_subplot(1, 1, 1, projection='3d')
data_file = np.genfromtxt('data_file.txt', delimiter=',')
color = mpl.colors.to_rgba_array(data_file[:,0], alpha=None)
c = np.abs(color)
cmhot = plt.get_cmap("hot")
ax.scatter(X, Y, Z, color, s=50, c=c, cmap=cmhot)
/ Полный код:
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D, get_test_data
from matplotlib import cm
import numpy as np
import pandas as pd
from pandas import DataFrame
# set up a figure
fig = plt.figure(figsize=plt.figaspect(1))
ax = fig.add_subplot(1, 1, 1, projection='3d')
########################the part not working#########################
# load the data file
data_file = np.genfromtxt('data_file.txt', delimiter=',')
#possible processing / not working
#data_file = np.array(data_file)
#data_file = (data_file-min(data_file))/(max(data_file)-min(data_file))
# parse good sensor data from imported data
color = mpl.colors.to_rgba_array(data_file[:,0], alpha=None)
########################the part not working#########################
arrA = ([[ -4. ],
[ 0. ],
#...etc.
[ 0. ],
[ 4. ]])
arrB = ([[ -4. ],
[ -4. ],
#...etc.
[ 4. ],
[ 4. ]])
arrC = ([[ -30. ],
[ -30. ],
#...etc.
[ -30. ],
[ -30. ]])
#color = ([ 0. , 10. , 20. , 30. , 40. , 50. , 60. , 50. , 40. , 30. , 20. , 10. , 0. ])
arrA = np.array(arrA)
arrB = np.array(arrB)
arrC = np.array(arrC)
data_arrays = (arrA, arrB, arrC)
X, Y, Z = data_arrays
#ax.plot_wireframe(X, Y, Z, rstride=1, cstride=1, cmap='inferno')
c = np.abs(color)
cmhot = plt.get_cmap("hot")
ax.scatter(X, Y, Z, color, s=50, c=c, cmap=cmhot)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z');
plt.show()
/ .txt-файл
0. , 10. , 20. , 30. , 40. , 50. , 60. , 50. , 40. , 30. , 20. , 10. , 0.
10. , 20. , 30. , 40. , 50. , 60. , 50. , 60. , 50. , 40. , 30. , 20. , 10.
20. , 30. , 40. , 50. , 60. , 50. , 40. , 50. , 60. , 50. , 40. , 30. , 10.
40. , 50. , 60. , 50. , 40. , 30. , 20. , 30. , 40. , 50. , 60. , 50. , 40.
60. , 50. , 40. , 30. , 20. , 10. , 0. , 10. , 20. , 30. , 40. , 50. , 60.
#... etc.
/ Ошибка:
KeyError Traceback (most recent call last)
c:\users\te291095\appdata\local\programs\python\python36-32\lib\site-packages\matplotlib\colors.py in to_rgba(c, alpha)
165 try:
--> 166 rgba = _colors_full_map.cache[c, alpha]
167 except (KeyError, TypeError): # Not in cache, or unhashable.
KeyError: (nan, None)
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-26-8ef706d1f4cb> in <module>()
31
32 # parse good sensor data from imported data
---> 33 color = mpl.colors.to_rgba_array(data_file[:,0], alpha=None)
34 #color = data_file[:,0]
35 # display the first 16 sensor rows
c:\users\te291095\appdata\local\programs\python\python36-32\lib\site-packages\matplotlib\colors.py in to_rgba_array(c, alpha)
265 result = np.empty((len(c), 4), float)
266 for i, cc in enumerate(c):
--> 267 result[i] = to_rgba(cc, alpha)
268 return result
269
c:\users\te291095\appdata\local\programs\python\python36-32\lib\site-packages\matplotlib\colors.py in to_rgba(c, alpha)
166 rgba = _colors_full_map.cache[c, alpha]
167 except (KeyError, TypeError): # Not in cache, or unhashable.
--> 168 rgba = _to_rgba_no_colorcycle(c, alpha)
169 try:
170 _colors_full_map.cache[c, alpha] = rgba
c:\users\te291095\appdata\local\programs\python\python36-32\lib\site-packages\matplotlib\colors.py in _to_rgba_no_colorcycle(c, alpha)
217 # float)` and `np.array(...).astype(float)` all convert "0.5" to 0.5.
218 # Test dimensionality to reject single floats.
--> 219 raise ValueError("Invalid RGBA argument: {!r}".format(orig_c))
220 # Return a tuple to prevent the cached value from being modified.
221 c = tuple(c.astype(float))
ValueError: Invalid RGBA argument: nan
/ Проверяемая:
Код должен считывать данные из файла и обрабатывать их как цвет для точек на точечной диаграмме.
Если вы прочитали три строки вручную без файла и просто сохранили его как массив, он работает (см. Рисунок ниже), поэтому я не понимаю, почему он не будет работать, когда я получаю данные из файла.
