Как нарисовать график плотности и гистограмму вместе с помощью Python? - PullRequest
0 голосов
/ 06 октября 2019

Допустим, у меня есть такие данные:

c1=pd.DataFrame({'Num1':[1,2,3,4],
                 'Counts':[5,1,7,10]})
c2=pd.DataFrame({'Num2':[3,4,5,6],
                 'Counts':[3,5,2,8]})
c12=pd.DataFrame({'Num1':[1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4],
                  'Num2':[3,4,5,6,3,4,5,6,3,4,5,6,3,4,5,6],
                  'Counts':[2,3,1,3,4,5,1,6,7,2,5,10,4,8,2,9]})

c1 имеет Num1, Count означает, сколько раз числа в c1 встречаются в наборе данных. Например, 1 встречается 5 раз. Как и с2. c12 означает, сколько раз встречается Num1 и Num2. Например, Num1 = 1 и Num2 = 3 встречаются 2 раза.

Я хочу нарисовать такой график:

enter image description here

xось Num1 в c1, а ось y Num2. Гистограмма означает счет в с1 или с2. Диаграмма разброса означает число в с12. На точечной диаграмме размер точки - это число.

Как я могу использовать Python для этого?

1 Ответ

1 голос
/ 06 октября 2019

Вы можете объединить три графика в matplotlib:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(5, 5))
fig.add_axes([0, 0, 0.8, 0.8])
plt.scatter(x=c12['Num1'], y=c12['Num2'], s=c12['Counts'] * 20)
plt.xlabel('Num1')
plt.ylabel('Num2')
plt.xticks(range(10))
plt.yticks(range(10))
plt.ylim(0, 10)
plt.xlim(0, 10)

# first barplot
fig.add_axes([0, 0.8, 0.8, 0.2])
plt.bar(x=c1['Num1'], height=c1['Counts'])
plt.axis('off')
plt.xlim(0, 10)

# second barplot
fig.add_axes([0.8, 0, 0.2, 0.8])
plt.barh(y=c2['Num2'], width=c2['Counts'])
plt.axis('off')
plt.ylim(0, 10)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...