Renkleri seçmenize izin verecek plt.scatterbir cargüman iletebilirsiniz . Aşağıdaki kod colors, elmas renklerinizi çizim renkleriyle eşlemek için bir sözlük tanımlar .
import matplotlib.pyplot as plt
import pandas as pd
carat = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
price = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
color =['D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G',]
df = pd.DataFrame(dict(carat=carat, price=price, color=color))
fig, ax = plt.subplots()
colors = {'D':'red', 'E':'blue', 'F':'green', 'G':'black'}
ax.scatter(df['carat'], df['price'], c=df['color'].apply(lambda x: colors[x]))
plt.show()
df['color'].apply(lambda x: colors[x]) renkleri "elmas" dan "çizim" e etkili bir şekilde eşler.
(Başka bir örnek resim koymadığım için beni affet, bence 2 yeterli: P)
İle seaborn
Varsayılan olarak daha güzel görünmesini sağlayan seabornbir sarmalayıcı olanı kullanabilirsiniz matplotlib(daha ziyade fikir temelli, biliyorum: P) ama aynı zamanda bazı çizim işlevleri de ekler.
Bunun için seaborn.lmplotile kullanabilirsiniz fit_reg=False(bu, otomatik olarak bir miktar gerileme yapmasını engeller).
Aşağıdaki kod, örnek bir veri kümesi kullanır. Seçerek hue='color'size renklere dayalı dataframe bölmek ve ardından her biri çizmek için Seaborn söyle.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
carat = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
price = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
color =['D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G',]
df = pd.DataFrame(dict(carat=carat, price=price, color=color))
sns.lmplot('carat', 'price', data=df, hue='color', fit_reg=False)
plt.show()

olmadan seabornkullanarakpandas.groupby
Seaborn'u kullanmak istemiyorsanız kullanabilirsiniz pandas.groupby , renkleri tek başına elde ve sonra bunları sadece matplotlib kullanarak çizebilirsiniz, ancak ilerledikçe renkleri manuel olarak atamanız gerekecek, aşağıya bir örnek ekledim:
fig, ax = plt.subplots()
colors = {'D':'red', 'E':'blue', 'F':'green', 'G':'black'}
grouped = df.groupby('color')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='carat', y='price', label=key, color=colors[key])
plt.show()
Bu kod, yukarıdaki ile aynı DataFrame'i varsayar ve ardından onu temel alarak gruplandırır color. Daha sonra bu gruplar üzerinde yineleyerek her biri için çizim yapar. Bir renk seçmek için colors, elmas rengini (örneğin D) gerçek bir renge ( örneğin ) eşleyebilen bir sözlük oluşturdum red.
