トランプとバイデンの直接対決でトランプ大統領が大敗を喫している件

元副大統領のJoe Biden (ジョー・バイデン)とトランプ大統領の直接対決の世論調査結果が酷いことになっている。バイデンが民主党の代表候補になることは100%ないので、この直接対決自体が現実では有り得ないのだが、この種の世論調査の無意味さを証明するにはもってこいのデータとなっている。

スポンサーリンク

バイデン vs. トランプ (棒グラフ)

先ず、以下のサイトからトランプ大統領支持率の推移データをダウンロードしてロードする。

import pandas as pd
import requests

df = pd.read_html(requests.get('https://www.realclearpolitics.com/epolls/2020/president/us/general_election_trump_vs_biden-6247.html#polls').content)
df1 = df[1]
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
import matplotlib.patches as mpatches
style.use('ggplot')

fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(20,15))

for i, row in df1.iterrows():
    bar([i], [row['Biden (D)']],
        color=['#008AB8'], width=0.8, align='center', edgecolor='none')
    bar([i], [row['Trump (R)']], bottom=[row['Biden (D)']],
            color=['#CC6699'], width=0.8, align='center', edgecolor='none')

xlim(-0.6, len(df1)-.6)
ylim(0, 100)
xticks(range(len(df1)), df1['Date'], fontsize=20,rotation=90)
grid(False)
yticks(np.arange(0, 101, 25),
       ['{}%'.format(int(x)) for x in np.arange(0, 101, 25)])
xlabel('Date')
ylabel('バイデン vs. トランプ')
plot([-0.425, 65.425], [50, 50], lw=2, color='black')
plot([-0.425, 65.425], [25, 25], lw=2, color='black')
plot([-0.425, 65.425], [75, 75], lw=2, color='black')
a = mpatches.Patch(color='#CC6699', label='トランプ')
b = mpatches.Patch(color='#008AB8', label='バイデン')
ax.legend(handles=[a,b],bbox_to_anchor=(0,1.02,1,0.2),loc="lower left",mode="None",\
          borderaxespad=0,ncol=2,prop={'size': 26});
gca().invert_xaxis();

合計が100%にならないのでこの棒グラフではダメなようである。

fig, ax = subplots(figsize=(20,15))
df1.plot(ax=ax,kind='bar')
xlim(-0.6, len(df1)-.6)
xticks(range(len(df1)), df1['Date'], fontsize=20,rotation=90);
gca().invert_xaxis();

いまいちしっくり来ない。

fig, ax = subplots(figsize=(20,15))
colors = ['b','r']
df1.plot(ax=ax,kind='bar',width=.9,stacked=True,color=colors)
xlim(-0.6, len(df1)-.6)
xticks(range(len(df1)), df1['Date'], fontsize=20,rotation=90)
yticks(np.arange(0, 101, 10),
       ['{}%'.format(int(x)) for x in np.arange(0, 101, 10)])
values = (df1['Biden (D)'].tolist()
                + df1['Trump (R)'].tolist())
plot([-0.425, 65.425], [50, 50], lw=2, color='black')
a = mpatches.Patch(color='r', label='トランプ')
b = mpatches.Patch(color='b', label='バイデン')
ax.legend(handles=[a,b],bbox_to_anchor=(0,1.02,1,0.2),loc="lower left",mode="None",\
          borderaxespad=0,ncol=2,prop={'size': 26});
for i, j in zip(ax.patches, values):
    h = i.get_height() /2.
    w = i.get_width() /2.
    x, y = i.get_xy()
    ax.text(x+w, y+h,int(j),ha='center', va='bottom',color='w',weight='black')
gca().invert_xaxis();

直近のデータだと、バイデンはトランプに13ポイント差を付けている。3月17日〜6月10日のデータでは、9ポイント差でバイデンがトランプに圧勝している。

バイデン vs. トランプ (折れ線グラフ)

style.use('ggplot')
rcParams["font.size"] = "25"
rc('xtick', labelsize=25)
rc('ytick', labelsize=25)
fig, ax = subplots(figsize=(20,16))
grid(b=True, which='major', color='k', linestyle='-')
minorticks_on()
grid(b=True, which='minor',color='gray',linestyle='-',alpha=0.7)
df1.plot(ax=ax,marker='o',lw=2)
ax.legend(loc='lower left', prop={'size': 26})
xlim(-.6, 27.4)
xticks(range(0,len(df1.index)),df1['Date'],fontsize=15,rotation=90)
gca().invert_xaxis();

この時期のクリントン vs. トランプは、ヒラリーが50%、トランプが32%で、ヒラリーがトランプに18ポイント差を付けていたことを考えると、こんなpollには何の意味もないことが良く分かるはずである。しかしながら、2015年のトランプが政治家としては全くの未知数で、現在のトランプが史上空前の好景気を演出したアメリカ史上屈指の名大統領だという事実を考慮すれば、この数字はかなりの問題があるという見方もできるようである。