Python 带第二轴的Seaborn countplot,带有序数据

Python 带第二轴的Seaborn countplot,带有序数据,python,python-3.x,matplotlib,data-visualization,seaborn,Python,Python 3.x,Matplotlib,Data Visualization,Seaborn,我正在尝试创建一个带有线图的计数图,作为我将在工作中进行的一些数据可视化的实践。我在看kaggle的kickstarter数据 我运行了一个带有项目状态色调的countplot(成功、失败、取消),这两个都是有序的 filter_list = ['failed', 'successful', 'canceled'] df2 = df[df.state.isin(filter_list)] fig = plt.gcf() fig.set_size_inches( 16, 10) sns.coun

我正在尝试创建一个带有线图的计数图,作为我将在工作中进行的一些数据可视化的实践。我在看kaggle的kickstarter数据

我运行了一个带有项目状态色调的countplot(成功、失败、取消),这两个都是有序的

filter_list = ['failed', 'successful', 'canceled']
df2 = df[df.state.isin(filter_list)]

fig = plt.gcf()
fig.set_size_inches( 16, 10)
sns.countplot(x='main_category', hue='state', data=df2, order = df2['main_category'].value_counts().index, 
              hue_order = df2['state'].value_counts().index)
结果如下:

然后创建第二个轴并添加一个线图

fig, ax = plt.subplots()
fig.set_size_inches( 16, 10)

ax = sns.countplot(x='main_category', hue='state', data=df, ax=ax, order = df2['main_category'].value_counts().index, 
              hue_order = df2['state'].value_counts().index)

ax2 = ax.twinx()
sns.lineplot(x='main_category', y='backers', data=df2, ax =ax2)
但这会更改列标签,如下所示:

看起来数据是相同的,只是列的顺序不同。我仍在学习,所以我的代码可能是低效的或有一些多余的,但任何帮助都将不胜感激。唯一的其他事项是如何创建df,如下所示:

import pandas as pd
import numpy as np
import seaborn as sns; sns.set(style="white", color_codes=True)
import matplotlib.pyplot as plt

df = pd.read_csv('ks.csv')
df = df.drop(['ID'], axis = 1)
df.head()

我不认为
lineplot
是您要找的<应该使用代码>线图,而不是分类。我甚至感到惊讶,这居然奏效了

我想你是在找我

请注意,这样使用时,
pointplot
将显示跨类别的平均支持者数量。如果这不是您想要的,您可以使用
estimator=
paramater传递另一个聚合函数

乙二醇


我不认为
lineplot
是您要找的<应该使用代码>线图,而不是分类。我甚至感到惊讶,这居然奏效了

我想你是在找我

请注意,这样使用时,
pointplot
将显示跨类别的平均支持者数量。如果这不是您想要的,您可以使用
estimator=
paramater传递另一个聚合函数

乙二醇


非常感谢这很有帮助,我仍在学习这些可视化,所以很好地指出我错在哪里。非常感谢这很有帮助,我仍在学习这些可视化,所以很好地指出我错在哪里
filter_list = ['failed', 'successful', 'canceled']
df2 = df[df.state.isin(filter_list)]
order = df2['main_category'].value_counts().index

fig = plt.figure()
ax1 = sns.countplot(x='main_category', hue='state', data=df2, order=order, 
              hue_order=filter_list)
ax2 = ax1.twinx()
sns.pointplot(x='main_category', y='backers', data=df2, ax=ax2, order=order)
sns.pointplot(x='main_category', y='backers', data=df2, ax=ax2, order=order, estimator=np.sum)