-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplot.py
50 lines (39 loc) · 1.6 KB
/
plot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import pandas as pd
import plotly.express as px
import sys
if __name__ == '__main__':
folder = sys.argv[1]
votes = pd.read_csv(f"./data/{folder}/participants-votes.csv")
comment_ids = [int(x) for x in votes.columns[7:]]
quality = pd.read_csv(f"./data/{folder}/note_quality.txt", header=None)
quality.columns = ['quality']
quality['comment-id'] = comment_ids
# quality.set_index('comment-id', inplace=True)
alignment = pd.read_csv(f"./data/{folder}/note_alignment.txt", header=None)
alignment.columns = ['alignment']
alignment['comment-id'] = comment_ids
alignment.set_index('comment-id', inplace=True)
comments = pd.read_csv(
f"./data/{folder}/comments.csv")[['comment-id', 'comment-body', 'agrees', 'disagrees']]
print(comments.dtypes)
print(quality.dtypes)
comments = comments.merge(
quality, left_on='comment-id', right_on='comment-id')
comments = comments.merge(
alignment, left_on='comment-id', right_index=True)
comments.sort_values(by='alignment', ascending=False, inplace=True)
comments.to_csv(f"./data/{folder}/comments_with_quality.csv", index=False)
def label(row):
body = row['comment-body']
agrees = row['agrees']
disagrees = row['disagrees']
return f"{body} ({agrees} agrees, {disagrees} disagrees)"
comments['label'] = comments.apply(label, axis=1)
fig = px.scatter(comments, x='alignment', y='quality',
hover_name='label')
fig.update_layout(
title=folder,
xaxis_title='Polarization',
yaxis_title='Quality'
)
fig.show()