كيف تجعل تأثير ثلاثي الأبعاد على القضبان في matplotlib؟
-
29-09-2019 - |
سؤال
لدي رسم بسيط للغاية من الشريط الأساسي مثل هذا
لكني أريد أن أعرض القضبان مع بعض التأثير ثلاثي الأبعاد ، مثل هذا
أريد فقط أن يكون لهذا التأثير ثلاثي الأبعاد ... الكود الخاص بي هو:
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 ، تحتاج فقط إلى القيام بثلاثة أشياء (إضافية):
يستورد Axes3d من mpl_toolkits.mplot3d
اتصل ب Bar3d الطريقة (في السيناريو الخاص بي ، يطلق عليها AX1 مثيل فئة المحاور). توقيع الطريقة:
BAR3D (x ، y ، z ، dy ، dz ، color = 'b' ، zsort = "mealce" ، *args ، ** kwargs)
تمرير في وسيطة إضافية لإضافة add_subplot ، الإسقاط = '3D'
قد تكون قادرًا على حل شيء ما mplot3d
.