Сложенный графский график в морском дне [дубликат]

Вы можете объявить переменную final или сделать ее переменной экземпляра (или глобальной). Если вы объявите его окончательным, вы не сможете изменить его позже.

Любая переменная, определенная в методе и доступная анонимным внутренним классом, должна быть окончательной. В противном случае вы можете использовать эту переменную во внутреннем классе, не сознавая, что если переменная изменяется во внутреннем классе, а затем она используется позже в охватывающей области, изменения, сделанные во внутреннем классе, не сохраняются в охватывающей области. В основном, то, что происходит во внутреннем классе, остается во внутреннем классе.

Я написал более подробное объяснение здесь . Он также объясняет, почему экземпляры и глобальные переменные не обязательно должны быть объявлены окончательными.

3
задан ImportanceOfBeingErnest 21 April 2017 в 23:42
поделиться

2 ответа

Парень, создавший Seaborn , не любит уложенные гистограммы (но эта ссылка имеет хак, который использует Seaborn + Matplotlib для их создания).

Если вы готовы принять сгруппированную гистограмму вместо уложенной в один ряд, вот один из подходов:

 # first some sample data
 import numpy as np 
 import pandas as pd
 import seaborn as sns

 N = 1000
 mark = np.random.choice([True,False], N)
 periods = np.random.choice(['BASELINE','WEEK 12', 'WEEK 24', 'WEEK 4'], N)

 df = pd.DataFrame({'mark':mark,'period':periods})
 ct = pd.crosstab(df.period, df.mark)

 mark      False  True 
 period                
 BASELINE    118    111
 WEEK 12     117    149
 WEEK 24     117    130
 WEEK 4      127    131

 # now stack and reset
 stacked = ct.stack().reset_index().rename(columns={0:'value'})

 # plot grouped bar chart
 sns.barplot(x=stacked.period, y=stacked.value, hue=stacked.mark)

2
ответ дан andrew_reece 20 August 2018 в 08:07
поделиться
  • 1
    Спасибо за помощь! Я знал, что сюжеты панды и морского дна были построены на matplotlib, но я не был полностью уверен, как использовать это в моих интересах, не пытаясь переделать вещи. – JB1 24 April 2017 в 08:37
  • 2
    – Murphybro2 20 October 2018 в 16:16

Как вы сказали, вы можете использовать панды для создания графика сложенных штрихов. Аргумент о том, что вы хотите иметь «морской сюжет», не имеет значения, так как каждый сюжет на морском дне и каждый панд-сюжет - это, в конце концов, объекты matplotlib, поскольку инструменты построения обеих библиотек - это просто маскировочные обложки matplotlib.

Итак, вот полное решение (взятие данных из ответа @ andrew_reece).

import numpy as np 
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

n = 500
mark = np.random.choice([True,False], n)
periods = np.random.choice(['BASELINE','WEEK 12', 'WEEK 24', 'WEEK 4'], n)

df = pd.DataFrame({'mark':mark,'period':periods})
ct = pd.crosstab(df.period, df.mark)

ct.plot.bar(stacked=True)
plt.legend(title='mark')

plt.show()

11
ответ дан ImportanceOfBeingErnest 20 August 2018 в 08:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: