Reputation: 8678
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
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
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
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