假设我有以下具有两列的数据框: 标签:可以为-1、0或1。 years_of_expereicen:可以为0,1,2,3,4,5,6,7,8,9
label SSP_years_of_experience
22640 -1.0 5.0
181487 1.0 3.0
327672 0.0 9.0
254919 0.0 6.0
136942 1.0 10.0
我在这里的目标是使用此数据框创建百分比堆叠的条形图,其中x轴是多年的经验,而条形图是不同的颜色,每种颜色都包含一年的经验值。换句话说,我们在x轴上有10个可能的值,然后对于对应于每个标签的不同颜色的每个值有3条。 y轴应以百分比为单位。
我想知道如何在R(使用ggplot)中执行此操作,但是我是matplotlib的新手,而python是新手。
奖金指向我可以在两列中作为变量传递的位置(例如x,y)。 MOre奖励积分,用于在图表中以文本形式显示每个条形图中的观察数。
答案 0 :(得分:2)
如果数据框为public class RadioManager {
@SuppressLint("StaticFieldLeak")
private static RadioManager instance = null;
private static RadioService service;
private Context context;
private boolean serviceBound;
public RadioManager(Context context) {
this.context = context;
serviceBound = false;
}
public static RadioManager with(Context context) {
if (instance == null)
instance = new RadioManager(context);
return instance;
}
public static RadioService getService() {
return service;
}
public void playOrPause(String streamUrl) {
service.playOrPause(streamUrl);
}
public boolean isPlaying() {
if (service != null) {
return service.isPlaying();
}
return false;
}
public int getCurrentPosition() {
if (service != null) {
return service.getCurrentPosition();
}
return 0;
}
public void bind() {
Intent intent = new Intent(context, RadioService.class);
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
if (service != null)
EventBus.getDefault().post(service.getStatus());
}
public void unbind() {
context.unbindService(serviceConnection);
}
private ServiceConnection serviceConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder binder) {
RadioService.LocalBinder rl = (RadioService.LocalBinder) binder;
service = rl.getService();
}
public void onServiceDisconnected(ComponentName arg0) {
serviceBound = false;
}
};
}
,请尝试:
pandas
玩具数据框:
exp_name = 'year_of_experience'
label_name = 'label'
new_df = (df.groupby(exp_name)[label_name]
.value_counts(normalize=True)
.sort_index()
.unstack()
)
new_df.plot.bar(stacked=True)
输出: