Вопрос

У меня очень простая базовая графика бара, как этотalt text

Но я хочу отобразить полосы с некоторым 3D -эффектом, как этоalt text

Я просто хочу, чтобы бары имели этот 3D-эффект ... Мой код:

fig = Figure(figsize=(4.6,4))
ax1 = fig.add_subplot(111,ylabel="Valeur",xlabel="Code",autoscale_on=True)

width = 0.35
ind = np.arange(len(values))
rects = ax1.bar(ind, values, width, color='#A1B214')
ax1.set_xticks(ind+width)
ax1.set_xticklabels( codes )
ax1.set_ybound(-1,values[0] * 1.1)
canvas = FigureCanvas(fig)
response = HttpResponse(content_type='image/png')
canvas.print_png(response)

Я искал в галерее Matplotlib, попробовал несколько вещей, но мне не повезло, какие -либо идеи? Спасибо

Это было полезно?

Решение

Насколько я знаю, Матплотлиб не по дизайну Функции поддержки, такие как эффект «3D», который вы только что упомянули. Я помню, что читал об этом некоторое время назад. я не знаю, что изменилось в то же время.

Видеть это Обсуждение темы Больше подробностей.

Обновлять

Посмотрите на Джон Портер mplot3d. модуль. Это не часть стандартного MATPLOTLIB, кроме пользовательского расширения. Никогда не использовал это сам, так что не могу сказать много о его полезности.

Другие советы

Я, безусловно, понимаю вашу причину для необходимости 3D-бастового участка; Я подозреваю, поэтому они были созданы.

Библиотеки («инструментальные наборы») в matplotlib, необходимых для создания трехмерных графиков нет Сторонние библиотеки и т. Д., Скорее включены в базовую установку MATPLOTLIB. Анкет (Это верно для текущей стабильной версии, которая составляет 1,0, хотя я не верю, что это было для 0,98, поэтому изменение-от «дополнения» к части базовой установки-в течение прошлого года, в прошлом году, я верю)

Так что здесь вы:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as PLT
import numpy as NP

fig = PLT.figure()
ax1 = fig.add_subplot(111, projection='3d')

xpos = NP.random.randint(1, 10, 10)
ypos = NP.random.randint(1, 10, 10)
num_elements = 10
zpos = NP.zeros(num_elements)
dx = NP.ones(10)
dy = NP.ones(10)
dz = NP.random.randint(1, 5, 10)

ax1.bar3d(xpos, ypos, zpos, dx, dy, dz, color='#8E4585')
PLT.show()

Для создания 3D-баров в MapLotlib вам просто нужно сделать три (дополнительные) вещи:

  1. импорт AXES3D. от mpl_toolkits.mplot3d

  2. вызовать Bar3d Метод (в моем скриптеле, это называется ax1 экземпляр класса осей). Подпись метода:

    bar3d (x, y, z, dy, dz, color = 'b', zsort = "среднее", *args, ** kwargs)

  3. пройти в дополнительный аргумент на add_subplot, Проекция = '3D'

alt text

Вы могли бы быть в состоянии что-то работать с mplot3d.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top