Гистограмма (о сюжете) 3D в Python - PullRequest
6 голосов
/ 09 мая 2009

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

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

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

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

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

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

Ответы [ 5 ]

7 голосов
/ 09 мая 2009

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

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

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

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

5 голосов
/ 12 мая 2009

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

5 голосов
/ 09 мая 2009

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

1 голос
/ 20 января 2016

Это мой код для простого 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

0 голосов
/ 11 мая 2009

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

http://www.advsofteng.com

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

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

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

sample graph
(источник: advsofteng.com )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...