Renkleri seçmenize izin verecek plt.scatter
bir c
argü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 seaborn
bir sarmalayıcı olanı kullanabilirsiniz matplotlib
(daha ziyade fikir temelli, biliyorum: P) ama aynı zamanda bazı çizim işlevleri de ekler.
Bunun için seaborn.lmplot
ile 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 seaborn
kullanarakpandas.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
.