Я пытаюсь построить простой график рассеяния из фрейма данных pandas, но он генерирует график рассеяния точно такого же цвета. Я проверил, что он хорошо работает со случайным фреймом данных панд.
Вот MWE.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cbook
import matplotlib as mpl
import matplotlib.cm as cm
#This dataframe works perfectly well.
df = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=list('CRD'))
#Here is a dataframe converted to list, that doesn't work.
df['C'] = [4.0, 4.0, 4.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0]
df['D'] = [1.2, 1.6, 2.0, 1.2, 1.6, 1.6, 1.6, 1.6, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
df['R'] = [100.0, 100.0, 100.0, 100.0, 100.0, 1400.0, 1800.0, 2200.0, 100.0, 1400.0, 1800.0, 2200.0, 1000.0, 1500.0, 1700.0, 1900.0, 2200.0, 2500.0, 2800.0]
#My first hunch was that the column 'D' is a string but the dtypes returns it as a float64.. what am I missing?
#C float64
#D float64
#R float64
fig = plt.figure()
ax1 = plt.subplot(1,1,1)
im = ax1.scatter(df['C'], df['R'] , c=df['D'])
cb = fig.colorbar(im, ax=ax1)
cb.set_label('D')
ax1.set_ylabel('R')
ax1.set_xlabel('C')
fig.tight_layout()
plt.show()
plt.close()