-1

My aim is to make same thing in plotly: sns.countplot(x='Survived', data=train, hue='Sex') enter image description here

Then I wrote this code. But I couldn't print y values:

df1 = df[df["Survived"] == 0]
df2 = df[df["Survived"] == 1]

fig = go.Figure()

# Create layout and specify title, legend and so on
fig.add_trace(go.Bar(
    x=df["Sex"],
    y=df2,
    name="Survived",
    marker_color='lightgreen'
))
fig.add_trace(go.Bar(
    x=df["Sex"],
    y=df1,
    name= "Died",
    marker_color="red"
))

fig.update_layout(title_text='Survived/Died passengers by Sex', barmode='group')
#fig.layout.yaxis.type = 'category'
fig.show()

By the way, I used the titanic dataset.

Saw this on StackOverflow but didn't help.

Any help?

Gupta
  • 8,882
  • 4
  • 49
  • 59
Semi
  • 11
  • 2

2 Answers2

1

The intended graph can be obtained by specifying the Y-axis data counted for each category, and setting a unique value for gender.

fig = go.Figure()

# Create layout and specify title, legend and so on
fig.add_trace(go.Bar(
    x=df2["sex"].unique(),
    y=df2["sex"].value_counts(),
    name="Survived",
    marker_color='lightgreen'
))
fig.add_trace(go.Bar(
    x=df1["sex"].unique(),
    y=df1["sex"].value_counts(),
    name= "Died",
    marker_color="red"
))

fig.update_layout(title_text='Survived/Died passengers by Sex', barmode='group')
fig.update_yaxes(title='Count')
fig.update_xaxes(title='Sex')

fig.show()

enter image description here

r-beginners
  • 31,170
  • 3
  • 14
  • 32
0

Thanks this one worked

df = train.copy()
df = df.drop(["Pclass","Name","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"], axis=1)

df1 = df[df["Survived"] == 0]
df2 = df[df["Survived"] == 1]

fig = go.Figure()

# Create layout and specify title, legend and so on
fig.add_trace(go.Bar(
    x=df["Sex"],
    y=df2.value_counts(),
    name="Survived",
    marker_color='lightgreen'
))
fig.add_trace(go.Bar(
    x=df["Sex"],
    y=df1.value_counts(),
    name= "Died",
    marker_color="red"
))

fig.update_layout(title_text='Survived/Died passengers by Sex', barmode='group')
#fig.layout.yaxis.type = 'category'
fig.show()
Semi
  • 11
  • 2