Cybercop
Cybercop

Reputation: 8678

seaborn : plotting graph from dataframe in loop not working as expected

I am trying to plot tsplot of seaborn from dataframe. Here is the code I have

df = run_fully_connected_network(20, 200)
# print(df)
for feature in features:
    df_feature = df.loc[df['feature'] == feature]
#     print(df_feature)
    plt.figure()
    plt.title(feature)
#     plt.plot(figsize=(20,15))
    sns.tsplot(time="iteration", unit="feature", condition = "traits", value="count", data=df_feature)

Here is how dataframe looks for each iteration (df_feature):

iteration 1:

      iteration    feature traits proportion  count
1             0  education      1        n/a      4
2             0  education      2        n/a      5
3             0  education      3        n/a      7
4             0  education      4        n/a      4
18            1  education      1        n/a      4
19            1  education      2        n/a      5
20            1  education      3        n/a      8
21            1  education      4        n/a      3
35            2  education      1        n/a      2
36            2  education      2        n/a      7
37            2  education      3        n/a      8
38            2  education      4        n/a      3
51            3  education      1        n/a      1
52            3  education      2        n/a      7
53            3  education      3        n/a      9
54            3  education      4        n/a      3
67            4  education      1        n/a      1
68            4  education      2        n/a      8
69            4  education      3        n/a      8
70            4  education      4        n/a      3
83            5  education      1        n/a      1
84            5  education      2        n/a      7
85            5  education      3        n/a      8
86            5  education      4        n/a      4
99            6  education      1        n/a      2
100           6  education      2        n/a      5
101           6  education      3        n/a      9
102           6  education      4        n/a      4
115           7  education      1        n/a      3
116           7  education      2        n/a      5
...         ...        ...    ...        ...    ...
1049        170  education      3        n/a     20
1053        171  education      3        n/a     20
1057        172  education      3        n/a     20
1061        173  education      3        n/a     20
1065        174  education      3        n/a     20
1069        175  education      3        n/a     20
1073        176  education      3        n/a     20
1077        177  education      3        n/a     20
1081        178  education      3        n/a     20
1085        179  education      3        n/a     20
1089        180  education      3        n/a     20
1093        181  education      3        n/a     20
1097        182  education      3        n/a     20
1101        183  education      3        n/a     20
1105        184  education      3        n/a     20
1109        185  education      3        n/a     20
1113        186  education      3        n/a     20
1117        187  education      3        n/a     20
1121        188  education      3        n/a     20
1125        189  education      3        n/a     20
1129        190  education      3        n/a     20
1133        191  education      3        n/a     20
1137        192  education      3        n/a     20
1141        193  education      3        n/a     20
1145        194  education      3        n/a     20
1149        195  education      3        n/a     20
1153        196  education      3        n/a     20
1157        197  education      3        n/a     20
1161        198  education      3        n/a     20
1165        199  education      3        n/a     20

iteration 2:

      iteration   feature traits proportion  count
5             0  religion      1        n/a      5
6             0  religion      2        n/a      4
7             0  religion      3        n/a      6
8             0  religion      5        n/a      5
22            1  religion      1        n/a      5
23            1  religion      2        n/a      4
24            1  religion      3        n/a      7
25            1  religion      5        n/a      4
39            2  religion      1        n/a      5
40            2  religion      2        n/a      3
41            2  religion      3        n/a      8
42            2  religion      5        n/a      4
55            3  religion      1        n/a      7
56            3  religion      2        n/a      2
57            3  religion      3        n/a      8
58            3  religion      5        n/a      3
71            4  religion      1        n/a      7
72            4  religion      2        n/a      2
73            4  religion      3        n/a      8
74            4  religion      5        n/a      3
87            5  religion      1        n/a      5
88            5  religion      2        n/a      2
89            5  religion      3        n/a      8
90            5  religion      5        n/a      5
103           6  religion      1        n/a      5
104           6  religion      2        n/a      3
105           6  religion      3        n/a      7
106           6  religion      5        n/a      5
119           7  religion      1        n/a      4
120           7  religion      2        n/a      5
...         ...       ...    ...        ...    ...
1050        170  religion      3        n/a     20
1054        171  religion      3        n/a     20
1058        172  religion      3        n/a     20
1062        173  religion      3        n/a     20
1066        174  religion      3        n/a     20
1070        175  religion      3        n/a     20
1074        176  religion      3        n/a     20
1078        177  religion      3        n/a     20
1082        178  religion      3        n/a     20
1086        179  religion      3        n/a     20
1090        180  religion      3        n/a     20
1094        181  religion      3        n/a     20
1098        182  religion      3        n/a     20
1102        183  religion      3        n/a     20
1106        184  religion      3        n/a     20
1110        185  religion      3        n/a     20
1114        186  religion      3        n/a     20
1118        187  religion      3        n/a     20
1122        188  religion      3        n/a     20
1126        189  religion      3        n/a     20
1130        190  religion      3        n/a     20
1134        191  religion      3        n/a     20
1138        192  religion      3        n/a     20
1142        193  religion      3        n/a     20
1146        194  religion      3        n/a     20
1150        195  religion      3        n/a     20
1154        196  religion      3        n/a     20
1158        197  religion      3        n/a     20
1162        198  religion      3        n/a     20
1166        199  religion      3        n/a     20

Iteration 3:

Similar dataframe

so basically there are 200 iterations. In x-axis I would expect range from 0 to 200. This is how the graph looks like at the moment

graph 1 religion enter image description here

Why am I getting different range in x-axis. Each dataframe has value between 0-199. So the graph should have had x-axis value from 0-199. But here each graph has different range even though iteration value is same for each dataframe.

Also, every run I get different range in x-axis. For example, in second run for religion I get x-axis range from 0-200. Here is a sample

enter image description here

Is there some way I can control the range that can be shown in graph? Or am I doing something wrong?

Upvotes: 2

Views: 681

Answers (1)

Y. Luo
Y. Luo

Reputation: 5722

Since you already know "each dataframe has value between 0-199", try using plt.xlim(0, 200) after your iteration. That's one way you can control the range of x-axis.

Details are seaborn.tsplot() set xlim using the min() and max() of the last sets of data (based on data.groupby(condition, sort=False)), as you can see here. Specifically, x-axis ranges of your 4 plots are controlled by "traits 4 in education", "traits 5 in religion", "traits 4 in social status" and "traits 2 in religion", respectively. I'm not sure why it happened that way. You may raise an issue about it.

Upvotes: 1

Related Questions