Mathematica - CSV в многомерных диаграммах - PullRequest
2 голосов
/ 16 августа 2011

У меня есть CSV-файл с 5 столбцами и около 2 * 10 4 строк, которые мне нужно визуализировать.

Я импортировал файл так:

data = Import["res.csv", "CSV"];`

Теперь я хочу создать из этого множество визуальных эффектов - все 5 измерений на одном графике, а также различные сечения.

Мои вопросы:

Если я хочу выбрать, скажем, столбцы 1, 4 и 5 из моих данных и передать их в ListPlot3D, как бы я это сделал?

И, значения в столбцах могут быть сгруппированы. Поэтому, если я хочу ListPlot3D столбцы 1, 2, 4 и 5, но я хочу сгруппировать столбцы 1 и 2 на одной оси, как бы я сказал Mathematica сделать это?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 17 августа 2011

Ненавижу не соглашаться с таким же плакатом , особенно после того, как он был принят, но Transpose не нужен.Почти все, о чем вы просите, может быть сделано в контексте Part:

ListPlot3D[ data[[All, {1, 4, 5}]] ]

Поскольку матрицы хранятся в Mathematica построчно, [[All, {1, 4, 5}]] может быть прочитано [[rows, columns]].Более конкретно, All указывает здесь, что вы хотите все строки, но вы также можете указать конкретные строки.Другая интересная конструкция - это Span, которая используется для указания групп индексов, и если ваш CSV-файл содержит строку заголовка, вы можете удалить ее из ваших данных, используя

ListPlot3D[ data[[ 2 ;; , {1, 4, 5}]] ]

Что касается вашего второго требования, чтобы использовать оба столбца 1 и 2 в качестве координаты x, тогда это просто

ListPlot3D[ {data[[All, {2, 4, 5}]], data[[All, {1, 4, 5}]]} ]

, и вы меняете All на 2;;, если хотите удалитьстрока заголовка.

2 голосов
/ 16 августа 2011

Если я правильно вас понимаю, это будет

ListPlot3D[Transpose[{data[[All, 1]], data[[All, 4]], data[[All, 5]]}]]

и для нескольких наборов:

ListPlot3D[
 {
  Transpose[{data[[All, 1]], data[[All, 3]], data[[All, 4]]}],
  Transpose[{data[[All, 2]], data[[All, 3]], data[[All, 5]]}]
  }
 ]
...