Skip to content

Commit

Permalink
monday lunchtime changes
Browse files Browse the repository at this point in the history
  • Loading branch information
linozen committed Aug 23, 2021
1 parent 18296c4 commit 29b0b25
Show file tree
Hide file tree
Showing 3 changed files with 183 additions and 3 deletions.
9 changes: 9 additions & 0 deletions explorer/lib/figures.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ def generate_histogram(df, x, y, nbins, color, color_discrete_map, labels):
return fig


def generate_overlaid_histogram(traces, names, colors):
fig = go.Figure()
for trace, name, color in zip(traces, names, colors):
fig.add_trace(go.Histogram(x=trace, name=name, marker_color=color))
fig.update_layout(barmode="overlay")
fig.update_traces(opacity=0.75)
return fig


def generate_stacked_bar_chart(data):
fig = go.Figure(data=data)
fig.update_layout(width=800, height=800, barmode="stack")
Expand Down
170 changes: 168 additions & 2 deletions explorer/media.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from lib.figures import (
generate_pie_chart,
generate_histogram,
generate_overlaid_histogram,
generate_stacked_bar_chart,
generate_ranking_plot,
)
Expand Down Expand Up @@ -49,6 +50,11 @@ def render_histogram(df, x, y, nbins, color, color_discrete_map, labels):
return generate_histogram(df, x, y, nbins, color, color_discrete_map, labels)


@st.cache
def render_overlaid_histogram(traces, names, colors):
return generate_overlaid_histogram(traces, names, colors)


@st.cache
def render_stacked_bar_chart(data):
return generate_stacked_bar_chart(data)
Expand Down Expand Up @@ -942,8 +948,8 @@ def get_ms_df():
if (
col.startswith("MShr3")
or col.startswith("MSfoi5")
or col.startswith("MSsoc5")
or col.startswith("MSsoc6")
or col.startswith("MSsoc5[")
or col.startswith("MSsoc6[")
or col.startswith("MSimpact1")
or col.startswith("MSimpact2")
or col.startswith("MSattitude3")
Expand Down Expand Up @@ -1399,6 +1405,166 @@ def get_ms_df():
)
)

st.write("## Scope of Coverage")

st.write(
"### Please estimate: how many journalistic pieces have you produced on intelligence-related topics in the past year? `[MSsoc1]`"
)
st.plotly_chart(
render_histogram(
df=df[filter],
x="MSsoc1",
y=None,
nbins=10,
color="country",
color_discrete_map={
"Germany": px.colors.qualitative.Prism[5],
"France": px.colors.qualitative.Prism[1],
"United Kingdom": px.colors.qualitative.Prism[7],
},
labels={"MSsoc1": "pieces produced lasy year"},
)
)

st.write(
"### Please estimate: how many of these pieces focused on surveillance by intelligence agencies? `[MSsoc2]`"
)
st.plotly_chart(
render_histogram(
df=df[filter],
x="MSsoc2",
y=None,
nbins=10,
color="country",
color_discrete_map={
"Germany": px.colors.qualitative.Prism[5],
"France": px.colors.qualitative.Prism[1],
"United Kingdom": px.colors.qualitative.Prism[7],
},
labels={"MSsoc2": "pieces focused on surveillance by intelligence agencies"},
)
)

MSsoc1_list = df[filter]["MSsoc1"].to_list()
MSsoc2_list = df[filter]["MSsoc2"].to_list()

st.write("### Comparison between `[MSsoc1]` and `[MSsoc2]`")
st.plotly_chart(
render_overlaid_histogram(
traces=[MSsoc1_list, MSsoc2_list],
names=[
"all pieces on <br>intelligence",
"pieces focused <br>on surveillance <br>by intelligence",
],
colors=[px.colors.qualitative.Prism[0], px.colors.qualitative.Prism[2]],
)
)

st.write(
"### How regularly do you report on surveillance by intelligence agencies? `[MSsoc4]`"
)
MSsoc4_counts = df[filter]["MSsoc4"].value_counts()
st.plotly_chart(
render_pie_chart(
MSsoc4_counts,
values=MSsoc4_counts,
names=MSsoc4_counts.index,
color=MSsoc4_counts.index,
color_discrete_map={
"Very regularly": px.colors.qualitative.Prism[9],
"Regularly": px.colors.qualitative.Prism[8],
"Somewhat regularly": px.colors.qualitative.Prism[7],
"Sometimes": px.colors.qualitative.Prism[6],
"Rarely or never": px.colors.qualitative.Prism[5],
"I don't know": px.colors.qualitative.Prism[10],
"I prefer not to say": px.colors.qualitative.Prism[10],
},
)
)

st.write(
"### When covering surveillance by intelligence agencies, which topics usually prompt you to write an article? `[MSsoc5]`"
)
MSsoc5_df = pd.DataFrame(columns=("option", "count", "country"))
for label in [
"follow_up_on_other_media",
"statements_government",
"oversight_reports",
"leaks",
"own_investigations",
"dont_know",
"prefer_not_to_say",
"other",
]:
MSsoc5_data = df[filter]["country"][df[f"MSsoc5[{label}]"] == 1].tolist()
for i in MSsoc5_data:
MSsoc5_df = MSsoc5_df.append(
{"option": label, "count": MSsoc5_data.count(i), "country": i},
ignore_index=True,
)
MSsoc5_df = MSsoc5_df.drop_duplicates()
st.plotly_chart(
render_histogram(
MSsoc5_df,
x="option",
y="count",
nbins=None,
color="country",
color_discrete_map={
"Germany": px.colors.qualitative.Prism[5],
"France": px.colors.qualitative.Prism[1],
"United Kingdom": px.colors.qualitative.Prism[7],
},
labels={"count": "people who answered 'Yes'"},
)
)

st.write("### If you selected ‘other’, please specify `[MSsoc5other]`")
for i in df[filter]["MSsoc5other"].to_list():
if type(i) != float:
st.write("- " + i)

st.write(
"### When covering surveillance by intelligence agencies, which of the following topics to you report on frequently? `[MSsoc6]`"
)
MSsoc6_df = pd.DataFrame(columns=("option", "count", "country"))
for label in [
"national_security_risks",
"intelligence_success",
"intelligence_misconduct",
"oversight_interventions",
"oversight_failures",
"policy_debates_leg_reforms",
"other",
]:
MSsoc6_data = df[filter]["country"][df[f"MSsoc6[{label}]"] == 1].tolist()
for i in MSsoc6_data:
MSsoc6_df = MSsoc6_df.append(
{"option": label, "count": MSsoc6_data.count(i), "country": i},
ignore_index=True,
)
MSsoc6_df = MSsoc6_df.drop_duplicates()
st.plotly_chart(
render_histogram(
MSsoc6_df,
x="option",
y="count",
nbins=None,
color="country",
color_discrete_map={
"Germany": px.colors.qualitative.Prism[5],
"France": px.colors.qualitative.Prism[1],
"United Kingdom": px.colors.qualitative.Prism[7],
},
labels={"count": "people who answered 'Yes'"},
)
)

st.write("### If you selected ‘other’, please specify `[MSsoc6other]`")
for i in df[filter]["MSsoc6other"].to_list():
if type(i) != float:
st.write("- " + i)

###############################################################################
# Appendix
###############################################################################
Expand Down
7 changes: 6 additions & 1 deletion explorer/merged.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from lib.figures import (
generate_pie_chart,
generate_histogram,
generate_overlaid_histogram,
generate_stacked_bar_chart,
generate_ranking_plot,
)
Expand Down Expand Up @@ -49,6 +50,11 @@ def render_histogram(df, x, y, nbins, color, color_discrete_map, labels):
return generate_histogram(df, x, y, nbins, color, color_discrete_map, labels)


@st.cache
def render_overlaid_histogram(traces):
return generate_overlaid_histogram(traces)


@st.cache
def render_stacked_bar_chart(data):
return generate_stacked_bar_chart(data)
Expand Down Expand Up @@ -1173,7 +1179,6 @@ def get_merged_ms_df():
ignore_index=True,
)
foi5_df = foi5_df.drop_duplicates()

st.plotly_chart(
render_histogram(
foi5_df,
Expand Down

0 comments on commit 29b0b25

Please sign in to comment.