Saya ingin membuat plot pencar di seaborn/matplotlib di mana ukuran titik ditentukan oleh nilai (berkelanjutan) dalam kerangka data, dan warna titik juga ditentukan oleh nilai kontinu kolom lain dalam kerangka data. Di ggplot, cara melakukannya adalah:

ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, size=Petal.Width, color=Petal.Length))

masukkan deskripsi gambar di sini python pandas matplotlib

6
jll 13 Maret 2017, 02:30

2 jawaban

Jawaban Terbaik

Berikut ini mereproduksi diagram kode dari pertanyaan. Memilih legenda agak rumit, karena kita harus mendefinisikan beberapa artis proxy secara manual untuk dimasukkan ke legenda dan menghapus entri legenda otomatis pertama yang dihasilkan melalui gaya seaborn.

enter image description here

import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")

plt.scatter(iris.sepal_width, iris.sepal_length, 
            c = iris.petal_length, s=(iris.petal_width**2)*60, cmap="viridis")
ax = plt.gca()

plt.colorbar(label="petal_length")
plt.xlabel("sepal_width")
plt.ylabel("sepal_length")

#make a legend:
pws = [0.5, 1, 1.5, 2., 2.5]
for pw in pws:
    plt.scatter([], [], s=(pw**2)*60, c="k",label=str(pw))

h, l = plt.gca().get_legend_handles_labels()
plt.legend(h[1:], l[1:], labelspacing=1.2, title="petal_width", borderpad=1, 
            frameon=True, framealpha=0.6, edgecolor="k", facecolor="w")

plt.show()

Perhatikan bahwa argumen ukuran s menunjukkan luas titik-titik. Jadi agar diameternya proporsional dengan kuantitas yang ditampilkan, itu harus dikuadratkan.

10
ImportanceOfBeingErnest 14 Maret 2017, 20:01

Inilah cara saya menyelesaikannya menggunakan Altair

from altair import Chart
import seaborn as sns
iris = sns.load_dataset("iris")
c = Chart(iris)
c.mark_circle().encode(
    x='sepal_width',
    y='sepal_length',
    color='petal_length',
    size='petal_width',
)

enter image description here

Untuk plot seperti itu, Altair mungkin merupakan pilihan yang bagus. Mengutip dari situs web mereka:

Altair adalah perpustakaan visualisasi statistik deklaratif untuk Python, berdasarkan Vega-Lite. Dengan Altair, Anda dapat menghabiskan lebih banyak waktu untuk memahami data Anda dan artinya.

3
Nipun Batra 2 Juli 2017, 09:50