كيف تجعل تأثير ثلاثي الأبعاد على القضبان في matplotlib؟

StackOverflow https://stackoverflow.com/questions/3501771

سؤال

لدي رسم بسيط للغاية من الشريط الأساسي مثل هذاalt text

لكني أريد أن أعرض القضبان مع بعض التأثير ثلاثي الأبعاد ، مثل هذاalt text

أريد فقط أن يكون لهذا التأثير ثلاثي الأبعاد ... الكود الخاص بي هو:

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 ، جربت بعض الأشياء ولكني لم أكن محظوظًا ، أي أفكار؟ شكرا

هل كانت مفيدة؟

المحلول

بقدر ما أعرف لا matplotlib من تصمبم ميزات الدعم مثل تأثير "3D" الذي ذكرته للتو. أتذكر أنني قرأت عن هذا بعض الوقت مرة أخرى. أنا لا أعرف أنه تغير في هذه الأثناء.

انظر الى هذا موضوع المناقشة لمزيد من التفاصيل.

تحديث

ألق نظرة على جون بورتر Mplot3d وحدة. هذا ليس جزءًا من matplotlib القياسي ولكن تمديد مخصص. لم تستخدمها بنفسي ، لذا لا أستطيع أن أقول الكثير عن فائدته.

نصائح أخرى

أنا بالتأكيد أفهم سببك للحاجة إلى مؤامرة شريط ثلاثي الأبعاد ؛ أظن أن هذا هو السبب في أنهم تم إنشاؤهم.

المكتبات ("مجموعات الأدوات") في 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()

لإنشاء أشرطة ثلاثية الأبعاد في Maplotlib ، تحتاج فقط إلى القيام بثلاثة أشياء (إضافية):

  1. يستورد Axes3d من mpl_toolkits.mplot3d

  2. اتصل ب Bar3d الطريقة (في السيناريو الخاص بي ، يطلق عليها AX1 مثيل فئة المحاور). توقيع الطريقة:

    BAR3D (x ، y ، z ، dy ، dz ، color = 'b' ، zsort = "mealce" ، *args ، ** kwargs)

  3. تمرير في وسيطة إضافية لإضافة add_subplot ، الإسقاط = '3D'

alt text

قد تكون قادرًا على حل شيء ما mplot3d.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top