Artikel ini membawa anda pengetahuan yang berkaitan tentang python, yang terutamanya memperkenalkan isu berkaitan tentang Seaborn, termasuk plot serakan, carta garis, carta bar, dsb. untuk pemprosesan visualisasi data Mari lihat kandungan di bawah , saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial video python
Pasang:
pip install seaborn
Import:
import seaborn sebagai sns
Sebelum kami mula secara rasmi, kami menggunakan kod berikut untuk menyediakan set. data untuk kemudahan Tunjukkan penggunaan.
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snspd.set_option('display.unicode.east_asian_width', True)df1 = pd.DataFrame( {'数据序号': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], '厂商编号': ['001', '001', '001', '002', '002', '002', '003', '003', '003', '004', '004', '004'], '产品类型': ['AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC'], 'A属性值': [40, 70, 60, 75, 90, 82, 73, 99, 125, 105, 137, 120], 'B属性值': [24, 36, 52, 32, 49, 68, 77, 90, 74, 88, 98, 99], 'C属性值': [30, 36, 55, 46, 68, 77, 72, 89, 99, 90, 115, 101] })print(df1)
Jana set data seperti berikut:
Menetapkan gaya menggunakan kaedah sns.set_style() dan gaya terbina dalam di sini menggunakan latar belakang warna untuk mewakili nama, tetapi kandungan sebenar tidak terhad kepada warna latar belakang.
sns.set_style()
berdetak latar belakang putih dengan kutu di sekelilingnya
sns.set_style(“putih”)
sns.set()
sns.set_style( “ darkgrid”)
sns.set_style(“whitegrid”)
sns.set_style(“gelap”)
sns.set_style(“ticks”)
Pepijat yang mungkin: gaya "kutu" tidak sah untuk imej yang dilukis menggunakan kaedah relplot().
3.3 Lain-lain
Perpustakaan seaborn dikapsulkan berdasarkan perpustakaan matplotlib, dan gaya terkapsulnya boleh menjadikan kerja lukisan kami lebih mudah. Pernyataan yang biasa digunakan dalam perpustakaan matplotlib masih sah apabila menggunakan perpustakaan seaborn.
Mengenai menetapkan sifat berkaitan gaya lain, seperti fon, satu perincian yang perlu diambil perhatian ialah kod ini mesti ditulis selepas sns.set_style() supaya berkesan. Contohnya, kod untuk menetapkan fon kepada tebal (untuk mengelakkan aksara Cina yang kacau-bilau):
plt.rcParams['font.sans-serif '] = [' SimHei']
Jika gaya ditetapkan di belakangnya, fon yang ditetapkan akan mengatasi gaya yang ditetapkan, sekali gus menghasilkan amaran. Begitu juga dengan sifat-sifat lain.3.2 Kawalan Sempadan
# 移除顶部和右部边框,只保留左边框和下边框sns.despine()# 使两个坐标轴相隔一段距离(以10长度为例)sns.despine(offet=10,trim=True)# 移除左边框sns.despine(left=True)# 移除指定边框 (以只保留底部边框为例)sns.despine(fig=None, ax=None, top=True, right=True, left=True, bottom=False, offset=None, trim=False)
4. Lukis plot berselerak
Gunakan perpustakaan seaborn untuk melukis plot serakan Anda boleh menggunakan kaedah replot() atau kaedah scatter().
Jenis parameter kaedah letak semula lalai kepada 'serakan', yang bermaksud melukis plot serakan.
Parameter rona dinyatakan dalam satu dimensi ini, dibezakan dengan warnasns.set_style('darkgrid')
① Lukis plot taburan nilai atribut A dan nombor jujukan data, titik serakan merah, grid kelabu, kekalkan sebelah kiri , sempadan bawah
plt.rcParams['font.sans-serif'] = ['SimHei'] sns.relplot(x='nombor siri data', y='Nilai atribut A', data=df1, color='red')
plt.show()② Lukis plot taburan untuk nilai atribut A dan nombor jujukan data Titik taburan memaparkan warna yang berbeza mengikut jenis produk yang berbeza
Grid putih, sempadan kiri dan bawah:
sns.set_style('whitegrid')
plt.rcParams['font.sans-serif'] = ['SimHei']
sns.relplot(x= ' Nombor siri data', y='Nilai atribut A', hue='product type', data=df1)
plt.show()
③ Plotkan nilai bagi tiga medan A, B dan C dalam gaya yang berbeza pada graf yang sama (lukiskan plot serakan data paksi-x ialah [0,2 ,4 ,6,8…]
gaya tanda (garis bingkai dalam empat arah), fon menggunakan huruf condong
sns.set_style('ticks')
plt.rcParams['font.sans-serif'] = ['STKAITI']
df2 = df1.copy()
df2.index = list(julat(0, len(df2)*2, 2 ))
dfs = [df2['Nilai atribut A'], df2['Nilai atribut B'], df2['Nilai atribut C']]
sns.scatterplot(data=dfs)
plt .show()
Gunakan perpustakaan sea. carta garis, anda boleh Gunakan kaedah replot() atau kaedah lineplot().
sns.replot() melukis carta serakan secara lalai Untuk melukis carta garis, cuma tukar jenis parameter kepada ". baris".
①
Keperluan: Lukis carta garis nilai atribut A dan nombor siri data,
grid kelabu, fon global ialah condong dan laraskan saiz fon tajuk dan label dua paksi,
dan Jarak antara sistem koordinat dan tepi kanvas (jarak ditetapkan kerana fon tidak dipaparkan sepenuhnya):
sns. set(rc={'font.sans-serif ': "STKAITI"})
sns.relplot(x='data siri nombor', y='A attribute value', data=df1, color='purple' , kind='line')
plt title("Lukis carta garisan", saiz fon=18)
plt.xlabel('num', fontsize=18)
plt.ylabel('A attribute value', fontsize=16)
plt.subplots_adjust (kiri=0.15, kanan=0.9, bawah=0.1, atas=0.9)
plt.show()
②
Keperluan: Lukiskan polyline atribut untuk jenis produk yang berbeza (tiga baris dalam satu gambar), gaya grid putih, fon condong.
sns.set_style("whitegrid")
plt.rcParams['font.sans-serif'] = ['STKAITI']
sns.replot (x='nombor siri data', y='Nilai atribut A', hue='jenis produk', data=df1, kind='line')
plt.title("Lukis carta garisan", saiz fon= 18)
plt.xlabel('bilangan', saiz fon=18)
plt.ylabel('Nilai atribut', saiz fon=16)
plt.subplots_adjust(kiri=0.15, kanan=0.9, bawah =0.1 , atas=0.9)
plt.show()
dfs = [df2['A attribute value'], df2['B attribute value'], df2['C attribute value']]df2.index = list(julat(0, len(df2)*2, 2))
③ : Akan Nilai bagi tiga medan A, B, dan C dilukis dalam gaya yang berbeza pada carta yang sama (melukis carta garisan Data paksi-x ialah [0,2,4,6,8…]
gaya darkkgrid (Garis bingkai dalam keempat-empat arah mesti disertakan), gunakan huruf condong untuk fon dan tambah label paksi-x, label paksi-y dan tajuk. Jarak tepi adalah sesuai.
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['STKAITI'] df2 = df1.copy()
sns.relplot(data=dfs, kind=“line”) plt.title(“Lukis carta garisan”, saiz fon=18)
plt.xlabel('bilangan', saiz fon=18) plt.subplots_adjust(kiri=0.15, kanan=0.9, bawah=0.1, atas = 0.9) plt.show ()
Kol subgraf berbilang mendatar
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = [ 'STKAITI']
sns.relplot(data=df1, x="A attribute value", y="B attribute value", kind="line", col=" Manufacturer number")
plt.subplots_adjust (kiri=0.05, kanan=0.95, bawah=0.1, atas=0.9)
plt.show()
Potret Baris subgraf berbilang
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['STKAITI']
sns.relplot(data=df1, x="Nilai atribut A", y="Nilai atribut B", kind="line", row="Nombor pengilang")
plt.subplots_adjust(kiri=0.15, kanan= 0.9, bawah = 0.1, atas = 0.95)
plt.show ()
hip h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h lukis carta garis. Butiran lain pada asasnya sama seperti di atas. Kod sampel adalah seperti berikut:
plt.rcParams ['font.sans-serif'] = ['STKAITI'] sns.lineplot(x='nombor siri data', y='Nilai atribut A', data=df1, color='purple' ) plt.title("Lukis carta garis", saiz fon=18)
plt.xlabel('bilangan', saiz fon=18)plt.ylabel('Nilai atribut', saiz fon=16)plt.rcParams['font.sans-serif'] = ['STKAITI']plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9) plt.show()
sns.set_style('darkgrid')
>
df2 = df1.copy() df2.index = list(julat(0, len(df2)*2, 2))
dfs = [df2['A attribute value'], df2['B attribute value'], df2[' C attribute value']]plt.title("Lukis carta garis", saiz fon=18)sns.set_style('darkgrid')plt.xlabel('bilangan', saiz fon=18) plt.ylabel('Nilai atribut', saiz fon=16)
plt.subplots_adjust(kiri=0.15, kanan=0.9, bawah=0.1, atas=0.9)
plt.show()
bins=6 bermaksud membahagikan lukisan kepada enam selang
rug=True bermaksud memaparkan bar kecil nipis pemerhatian pada paksi-x
kde=True bermaksud memaparkan lengkung ketumpatan isirong
plt.rcParams['font.sans-serif'] = ['STKAITI'] sns.displot (data =df1[['C attribute value']], bins=6, rug=True, kde=True)
plt.title("Histogram", fontsize=18)plt . show()
plt.show()plt.subplots_adjust(kiri=0.15, kanan=0.9, bawah =0.1, atas=0.9)
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['STKAITI']
np.random.seed (13)
Y = np.random.randn(300)
sns.displot(Y, bins=9, rug=True, kde=True)
plt.title("Histogram", saiz fon = 18)
plt.xlabel('Nilai atribut C', saiz fon=18) plt.ylabel('Kuantiti', saiz fon=16)
carta Dr.>
Kaedah barplot() digunakan untuk melukis carta bar
Data medan jenis produk digunakan sebagai data paksi-x dan data nilai atribut A digunakan sebagai y -data paksi. Kelaskan mengikut medan nombor pengeluar yang berbeza.
Butirannya adalah seperti berikut:Selain itu, seperti yang dinyatakan di atas, anda juga boleh menentukan pembolehubah kategori melalui rona; berbilang sub-gambar;sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['STKAITI']
sns.barplot(x="Jenis Produk ", y='Nilai atribut', hue="Nombor pengilang", data=df1)
plt.title("Carta bar", saiz fon=18)
plt.xlabel('Jenis produk', saiz fon =18)
plt.ylabel('kuantiti', saiz fon=16)
plt.subplots_adjust(kiri=0.15, kanan=0.9, bawah=0.15, atas=0.9)
plt.show() Parameter utama ialah x, y, data. Mewakili data paksi-x, data paksi-y dan data set data masing-masing.mengawal bilangan sub-gambar dalam setiap baris melalui col_wrap;
Mari kita lakukan regresi linear pada nilai atribut X dan nilai atribut Y Kodnya adalah seperti berikut:
sns.set_style('darkgrid')<.> plt. rcParams['font.sans-serif'] = ['STKAITI']
9. Lukiskan peta ketumpatan isirong kdeplot()
sns.lmplot(x="A attribute value", y='B attribute value', data=df1)
plt.title( "Model regresi linear", fontsize=18)
plt.xlabel('A attribute value', fontsize=18)
plt.ylabel('B attribute value', fontsize=16)
plt.subplots_adjust (kiri=0.15, kanan=0.9, bawah=0.15, atas=0.9)
plt.show()
>sns.set_style('darkgrid')
9.1 Peta ketumpatan isirong am
Melukis peta kepadatan jumlah boleh membuat kita lebih intuitif dapat melihat dengan jelas ciri-ciri taburan data sampel. Kaedah yang digunakan untuk melukis plot ketumpatan kernel ialah kaedah kdeplot().
Lukis plot ketumpatan kernel untuk nilai atribut A dan nilai atribut B Tetapkan lorek kepada True untuk memaparkan bayang sekeliling, jika tidak, hanya baris.
plt.rcParams['font.sans-serif'] = ['STKAITI']sns.kdeplot (df1["Nilai atribut"], shade=True, data=df1, color='r') sns.kdeplot(df1["B attribute value"], shade=True, data=df1, color= 'g') plt.title("Plot Ketumpatan Kernel", fontsize=18)
plt.xlabel('Value', fontsize=18)plt.subplots_adjust(left=0.15, right=0.9 , bawah=0.15, atas=0.9) plt.show()
ˆ ˆ ˆ ˆ
9.2 Plot ketumpatan isirong marginalKaedah sns.jointplot() digunakan semasa melukis peta ketumpatan isirong marginal. Jenis parameter hendaklah "kde". Apabila menggunakan kaedah ini, gaya gelap digunakan secara lalai. Ia tidak disyorkan untuk menambah gaya lain secara manual, jika tidak, imej mungkin tidak dipaparkan dengan betul.
plt.rcParams['font.sans-serif'] = ['STKAITI']
sns.jointplot(x=df1["Nilai atribut"] , y=df1["B attribute value"], kind="kde", space=0)
plt.show()
10. Lukis boxplot boxplot()
Kaedah boxplot() digunakan untuk melukis boxplot.
Parameter asas ialah x, y, data.Selain itu, boleh juga terdapat rona untuk mewakili medan klasifikasi
lebar boleh melaraskan lebar kabinet
menandakan sama ada kabinet tengah memaparkan takik Palsu tidak memaparkannya.Memandangkan data sebelumnya tidak cukup besar untuk dipaparkan, satu lagi set data dijana di sini:
np.random. benih (13) Y = np.random.randint(20, 150, 360)
df2 = pd.DataFrame({'Nombor pengilang': ['001', '001', '001 ' , '002', '002', '002', '003', '003', '003', '004', '004', '004'] * 30, 'Jenis produk': [ ' AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC'] * 30 ,
'Nilai atribut XXX': Y
}
)
Selepas penjanaan, mula melukis plot kotak:
plt.rcParams['font.sans-serif'] = [ 'STKAITI']
sns.boxplot(x='jenis produk', y='Nilai atribut XXX', data=df2)
plt.show()
Selepas bertukar-tukar data paksi x dan y:
'> fon. .sans-serif'] = ['STKAITI']
sns.boxplot(y='jenis produk', x='Nilai atribut XXX', data=df2)
plt.show() Gunakan nombor pengilang sebagai medan klasifikasi:
plt.rcParams['font.sans-serif'] = ['STKAITI']
sns.boxplot (x='jenis produk', y='Nilai atribut XXX', data=df2, hue="nombor pengilang") plt.show()
11. Lukis plot biola violinplot()
Plot biola menggabungkan ciri plot kotak dan plot ketumpatan kernel untuk menunjukkan bentuk taburan data.
Gunakan kaedah violinplot() untuk melukis plot biola.
plt.rcParams['font.sans-serif'] = ['STKAITI'] sns.violinplot(x='Product Type', y=' Nilai atribut XXX', data=df2)
plt.show()
sns.plot biola(x='XXX nilai atribut', y='jenis produk', data=df2) plt.show() plt.show()
Ambil data nombor pemenang Shuangseqiu sebagai contoh untuk melukis peta haba. . Data di sini adalah penjanaan Nombor rawak.
12 Lukis peta haba()
import panda sebagai pdimport matplotlib.pyplot sebagai plt import seaborn sebagai sns
plt.rcParams['font.sans-serif'] = ['STKAITI']
sns.set() plt .figure(figsize=(6,6))
s1 = np.random.randint(0, 200, 33) s2 = np.random.randint(0, 200, 33)
s3 = np.random.randint(0, 200, 33){'satu': s1, 'dua': s2, 'tiga': s3,
'empat': s4,'lima':s5,'enam':s6, 'tujuh':s7
}
)
plt.title('Peta Haba Bola Warna Ganda ')
sns.peta haba(data, annot=Benar, fmt='d', lw=0.5)
plt.xlabel('Digit nombor menang')
plt.ylabel('Nombor bola dua warna ')
x = ['kedudukan pertama', 'kedudukan ke-2', 'kedudukan ke-3', 'kedudukan ke-4', 'kedudukan ke-5', 'kedudukan ke-6', 'kedudukan ke-7']
plt.xticks( julat(0, 7, 1), x, ha='left')
plt.show()
Pembelajaran yang disyorkan:
tutorial video python
Atas ialah kandungan terperinci Penjelasan terperinci tentang Python's Seaborn (visualisasi data). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!