Matplotlib dağılım grafiği açıklaması
Belirli bir alandaki farklı sıcaklıkları temsil etmek için bir 4D dağılım grafiği oluşturdum. Göstergeyi oluşturduğumda, gösterge doğru sembolü ve rengi gösteriyor ancak içinden bir çizgi ekliyor. Kullandığım kod şu şekilde:
colors=['b', 'c', 'y', 'm', 'r']
lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0])
ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
l = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
a = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
h = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8)
Line2Dyi
Scatterve
scatterolarak değiştirmeyi denedim. Scatter
bir hata döndürdü ve scatter
grafiği değiştirdi ve bir hata döndürdü.
Scatterile,
range(10)`'u veri noktalarını içeren listelere değiştirdim. Her liste x, y veya z değişkenini içerir.
lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, marker='x', color=colors[0])
ll = plt.scatter(xLoLo, yLoLo, zLoLo, marker='o', color=colors[0])
l = plt.scatter(xLo, yLo, zLo, marker='o',color=colors[1])
a = plt.scatter(xAverage, yAverage, zAverage, marker='o',color=colors[2])
h = plt.scatter(xHi, yHi, zHi, marker='o',color=colors[3])
hh = plt.scatter(xHiHi, yHiHi, zHiHi, marker='o',color=colors[4])
ho = plt.scatter(xHOutlier, yHOutlier, zHOutlier, marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),scatterpoints=1, loc='lower left', ncol=3, fontsize=8)
Bunu çalıştırdığımda, gösterge artık mevcut değil, köşede içinde hiçbir şey olmayan küçük beyaz bir kutu.
Tavsiyen var mı?
50
3
2D dağılım grafiği
Aşağıdaki örnek kodda olduğu gibi,
matplotlib.pyplot
modülününscatter
yöntemini kullanmak işe yarayacaktır (en azından Python 2.7.5 ile matplotlib 1.2.1 ile). Ayrıca, dağılım grafikleri kullanıyorsanız, her bir grafik girişi için yalnızca bir noktaya sahip olmak için açıklama çağrısındanumpoints=1
yerinescatterpoints=1
kullanın.Aşağıdaki kodda, aynı aralığı tekrar tekrar çizmek yerine rastgele değerler kullandım ve tüm grafikleri görünür hale getirdim (yani birbiriyle örtüşmüyor).
3D dağılım grafiği
3D'de bir dağılım çizmek için
plot
yöntemini kullanın, çünkü gösterge birAxes3D
örneğininscatter
yöntemi tarafından döndürüldüğü gibiPatch3DCollection
yöntemini desteklemez. İşaretleyici stilini belirtmek için, aşağıdaki örnekte görüldüğü gibi, bunu yöntem çağrısına konumsal bir argüman olarak dahil edebilirsiniz. İsteğe bağlı olarak, hemlinestyle
hem demarker
parametrelerine argüman eklenebilir.İşte bunu yapmanın daha kolay bir yolu (kaynak: burada):
Ve bunu alacaksın:
Efsane özellikleri için buraya bir göz atın
Diğer cevaplar biraz karmaşık görünüyor, scatter fonksiyonuna sadece bir 'label' parametresi ekleyebilirsiniz ve bu, grafiğiniz için açıklama olacaktır.
İşte çıktınız