مؤامرة مع عدد أقل من علامات من نقاط البيانات (أو طريقة أفضل لرسم CDFS؟) [Matplotlib، أو مساعدة مؤامرة عامة

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

سؤال

أنا أخطط وظائف التوزيع التراكمي، مع عدد كبير من نقاط البيانات. أنا أقسم بعض الأسطر على نفس المؤامرة، والتي يتم تحديدها مع علامات كما سيتم طباعتها بالأبيض والأسود. ما أود الحصول على علامات متباعدة بالتساوي في البعد العاشر. ما أحصل عليه هو علامة واحدة لكل نقطة بيانات (ونظرا لعدد النقاط، كلها تتداخل)

لست متأكدا مما إذا كان فهمي لكيفية المخطط جيدا، أو مجرد نقص في فهم Matplotlib. لا يمكنني العثور على إعداد "تكرار علامة".

سيكون الحل السهل لخط واحد هو أخذ كل قيمة NTH من السطر، واستخدام ذلك كخط منفصل مع Linestyle = ''، ولكن أود أن تكون العلامات محاذاة رأسيا، ومصفوفات X المختلفة مختلفة أطوال.

# in reality, many thousands of values
x_example = [ 567, 460, 66, 1034, 275, 26, 628, 99, 287, 157, 705, 421, 1093, \ 
     139, 204, 14, 240, 179, 94, 139, 645, 670, 47, 520, 891, 450, 56, 964,   \
     1728, 99, 277, 356, 1628, 745, 364, 88, 112, 810, 816, 523, 401, 89,     \ 
     278, 917, 370, 53, 39, 90, 853, 356 ] 
x = sort(x_example)
y = linspace(0,1,len(x))

ax = subplot(1,1,1)
plots[w] = ax.plot(x,y, marker='o')
هل كانت مفيدة؟

المحلول

يمكنك ان تفعل plot(x,y,marker='o',markevery=5) لوضع علامة على كل نقطة الخامسة، لكن لا أعتقد أن هناك أي دعم مدمج لوضع علامات على فترات حتى. يمكنك اتخاذ قرار بشأن المواقع X حيث تريد العلامات، واستخدام على سبيل المثال numpy.searchsorted للعثور على نقاط البيانات التي تندرج المواقع، ثم نقلها بين النقاط المجاورة للعثور على الإحداثيات Y.

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