سؤال

أحتاج إلى رسم بعض البيانات بأشكال مختلفة.حاليا أنا أستخدم ماتبلوتليب وأنا سعيد جدًا بالمؤامرات التي أستطيع إنتاجها.

هذا السؤال يدور حول كيفية رسم السؤال الأخير.البيانات مشابهة لـ "جدول المسافة"، مثل هذا (أكبر فقط، جدولي هو 128 × 128 ولا يزال يحتوي على 3 أرقام أو أكثر لكل عنصر).

الآن، أصبحت بياناتي "منظمة" بشكل أفضل بكثير من جدول المسافة (لا تختلف بياناتي "عشوائيًا" كما هو الحال في جدول المسافة المرتب أبجديًا)، وبالتالي فإن البيانات ثلاثية الأبعاد شريط الرسم البياني, أو ربما 3 منهم، سيكون مثاليا.ما أفهمه هو أن مثل هذا المخطط مفقود في Matplotlib.

يمكنني استخدام (ملون) مثل Countor3d هؤلاء أو شيء ثنائي الأبعاد مثل imshow، لكنه لا يمثل بشكل جيد ماهية البيانات (البيانات لها معنى فقط في نقاطي البالغ عددها 128 نقطة، ولا يوجد أي شيء بين نقطتين).وارتفاع الأشرطة أكثر قابلية للقراءة من اللون، IMO.

وهكذا الأسئلة:

  1. هل من الممكن إنشاء مخطط شريطي ثلاثي الأبعاد في Matplotlib؟يجب أن يكون واضحًا أنني أعني المجال ثنائي الأبعاد، وليس مجرد مخطط شريطي ثنائي الأبعاد مع عرض ثلاثي الأبعاد "زائف" لأغراض جمالية
  2. إذا كانت الإجابة على السؤال السابق لا، فهل هناك مكتبة أخرى قادرة على ذلك؟أفضّل بشدة شيئًا يعتمد على لغة Python، لكنني موافق على الإمكانيات الأخرى الملائمة لنظام التشغيل Linux
  3. إذا كانت الإجابة على السؤال السابق هي لا، فهل لديك أي اقتراحات حول كيفية إظهار تلك البيانات؟على سبيل المثالإنشاء جدول بالقيم، متراكبًا على imshow أو بطريقة ملونة أخرى؟
هل كانت مفيدة؟

المحلول

MyavaVi2 يستطيع جعل الرسوم البيانية الشريطية ثلاثية الأبعاد (انتقل للأسفل قليلاً).حالما تمتلك مايافي/فتك/خدمات الاختبارات التربوية/إلخ.تثبيت كل شيء يعمل بشكل جميل، ولكن قد يتطلب الأمر بعض العمل لتثبيته بالكامل.لقد تم تجهيز Ubuntu بكل هذه الميزات، لكنها توزيعة Linux الوحيدة التي أعلم أنها تحتوي على ذلك.

نصائح أخرى

لبعض الوقت، لم يكن لدى matplotlib أي دعم ثلاثي الأبعاد، ولكن تمت إضافته مرة أخرى حديثاً.سوف تحتاج إلى استخدام إصدار svn، حيث لم يتم إصدار أي إصدار منذ ذلك الحين، والوثائق قليلة بعض الشيء (انظر الأمثلة/mplot3d/demo.py).لا أعرف ما إذا كان mplot3d يدعم المخططات الشريطية ثلاثية الأبعاد الحقيقية، ولكن يبدو أن أحد العروض التوضيحية يمكن توسيعه ليشمل شيئًا كهذا.

يحرر:الكود المصدري للعرض التوضيحي موجود الأمثلة ولكن لسبب ما فإن النتيجة ليست كذلك.أعني test_polys وظيفة، وهنا كيف يبدو:

مثال على الشكل http://www.iki.fi/jks/tmp/poly3d.png

ال test_bar2D ستكون الوظيفة أفضل، ولكن تم التعليق عليها في العرض التوضيحي لأنها تسبب خطأً في إصدار svn الحالي.ربما تكون هناك مشكلة تافهة، أو شيء يصعب إصلاحه.

هناك احتمال آخر وهو Gnuplot، والذي يمكنه رسم نوع ما الرسوم البيانية الشريطية الزائفة ثلاثية الأبعاد, ، و gnuplot.py يسمح بالتواصل مع Gnuplot من Python.لم أحاول ذلك بنفسي، رغم ذلك.

هذا هو الكود الخاص بي لـ 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

يمكنك مراجعة مدير المخطط:

http://www.advsofteng.com

يحتوي على مجموعة واسعة جدًا من المخططات والرسوم البيانية ويحتوي على واجهة برمجة تطبيقات Python (والعديد من اللغات الأخرى).

هناك طبعتان:يضع الإصدار المجاني صورة على الصورة التي تم إنشاؤها ، وإصدار الدفع بسعر معقول.

فيما يلي أحد المخططات الشريطية المكدسة ثلاثية الأبعاد الأكثر إثارة للاهتمام:

sample graph
(مصدر: advsofteng.com)

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