Гистограмма (о сюжете) 3D в Python

python matplotlib plot 3d

4912 просмотра

5 ответа

Мне нужно представить некоторые данные в различных формах. В настоящее время я использую Matplotlib, и я довольно доволен графиками, которые я могу создать.

Этот вопрос о том, как построить последний. Данные похожи на «таблицу расстояний», вот так (чуть больше, моя таблица имеет размер 128х128 и по-прежнему имеет 3 или более числа на элемент).

Теперь мои данные гораздо лучше «структурированы», чем таблица расстояний (мои данные не изменяются «случайным образом», как в таблице расстояний в алфавитном порядке), таким образом, трехмерная диаграмма , или, возможно, 3 из них, была бы идеальной. Насколько я понимаю, такая диаграмма отсутствует в Matplotlib.

Я мог бы использовать (цветные) Countor3d, подобные этим, или что-то в 2D, например, imshow, но он не очень хорошо отражает то, что представляют собой данные (данные имеют значение только в моих 128 точках, между двумя точками нет ничего) , И высота полосок более читабельна, чем цветная, ИМО.

Таким образом, вопросы:

  1. Можно ли создать 3D-диаграмму в Matplotlib? Должно быть понятно, что я имею в виду 2D-домен, а не просто 2D-диаграмму с «поддельным» 3D-рендерингом в эстетических целях.
  2. если ответ на предыдущий вопрос - нет, то может ли какая-нибудь другая библиотека сделать это? Я сильно предпочитаю что-то на основе Python, но я в порядке с другими дружественными для Linux возможностями
  3. Если ответ на предыдущий вопрос - нет, то есть ли у вас какие-либо предложения о том, как показать эти данные? Например, создать таблицу со значениями, наложенными на imshow или другим цветным способом?
Автор: Davide Источник Размещён: 17.05.2019 02:44

Ответы (5)


5 плюса

Решение

MyavaVi2 может создавать трехмерные элементы (прокрутите немного вниз). Как только у вас есть MayaVi / VTK / ETS / и т. Д. Установлено, что все работает прекрасно, но может потребоваться некоторая работа, чтобы все это установить. В Ubuntu все это упаковано, но я знаю, что это единственный дистрибутив Linux.

Автор: Autoplectic Размещён: 09.05.2009 04:10

7 плюса

В течение некоторого времени у matplotlib не было поддержки 3D, но она была добавлена недавно . Вам нужно будет использовать версию svn, поскольку с тех пор не было выпущено ни одной версии, а документация немного скудна (см. Examples / mplot3d / demo.py). Я не знаю, поддерживает ли mplot3d реальные трехмерные гистограммы, но одна из демонстраций выглядит так, будто ее можно расширить до чего-то подобного.

Изменить: Исходный код для демонстрации в примерах, но по какой-то причине результат не так. Я имею в виду test_polysфункцию, и вот как это выглядит:

пример рисунка http://www.iki.fi/jks/tmp/poly3d.png

test_bar2DФункция была бы еще лучше, но это закомментировано в демо , поскольку это приводит к ошибке с текущей версией SVN. Это может быть какая-то тривиальная проблема или что-то, что сложнее исправить.

Автор: Jouni K. Seppänen Размещён: 09.05.2009 04:56

5 плюса

Еще одна возможность - это Gnuplot, которая может рисовать какие-то псевдо-3D гистограммы , а gnuplot.py позволяет взаимодействовать с Gnuplot из Python. Я сам не пробовал.

Автор: Jouni K. Seppänen Размещён: 12.05.2009 11:50

1 плюс

Это мой код для простого Bar-3d с использованием matplotlib.

import mpl_toolkits
from mpl_toolkits.mplot3d import Axes3D   
import matplotlib.pyplot as plt
%matplotlib inline

## The value you want to plot 
zval=[0.020752244,0.078514652,0.170302899,0.29543857,0.45358061,0.021255922,0.079022499,\
  0.171294169,0.29749654,0.457114286,0.020009631,0.073154019,0.158043498,0.273889264,0.419618287]    

fig = plt.figure(figsize=(12,9))
ax = fig.add_subplot(111,projection='3d')
col=["#ccebc5","#b3cde3","#fbb4ae"]*5
xpos=[1,2,3]*5
ypos=range(1,6,1)*5
zpos=[0]*15
dx=[0.4]*15
dy=[0.5]*15
dz=zval

for i in range(0,15,1):
     ax.bar3d(ypos[i], xpos[i], zpos[i], dx[i], dy[i], dz[i],     
color=col[i],alpha=0.75)

ax.view_init(azim=120)
plt.show()      

http://i8.tietuku.com/ea79b55837914ab2.png

Автор: Han Zhengzu Размещён: 20.01.2016 08:19

0 плюса

Вы можете проверить Chart Director:

http://www.advsofteng.com

Он имеет довольно широкий спектр диаграмм и графиков и имеет приятный API-интерфейс Python (и несколько других языков).

Существует две редакции: бесплатная версия ставит в тупик сгенерированное изображение, а платная версия имеет довольно разумную цену.

Вот одна из наиболее интересных трехмерных гистограмм:

примерный график
(источник: advsofteng.com )

Автор: Mark Harrison Размещён: 10.05.2009 10:09
Вопросы из категории :
32x32