This chart is a remake of https://commons.wikimedia.org/wiki/File:Chart_of_UK_COVID-19_daily_new_cases.png with up-to-date data and source code.
It was generated with the following source code using UK government data (link included):

from matplotlib import pyplot as plt
from urllib.request import urlopen
import pandas

import datetime
import pandas as pd
import io
import numpy as np
import matplotlib.ticker as ticker

URL = "https://api.coronavirus.data.gov.uk/v2/data?areaType=overview&amp;metric=newAntibodyTestsByPublishDate&amp;format=csv"
data = urlopen(URL).read()
df = pd.read_csv(io.BytesIO(data))
df = df.assign(date=pd.to_datetime(df["date"]))
def add_moving_average(df):
    df["moving_average"] = moving_average(df["newAntibodyTestsByPublishDate"])

def moving_average(data):
    window_size = 7
    return np.concatenate([[float('nan')] * 3, np.convolve(data, np.ones(window_size)/window_size, mode='valid'), [float('nan')] * 3])

def plot_cases(df, start, end):
    df_2021_h1 = df[df.date &gt;= start][df.date &lt; end].sort_values("date")
    add_moving_average(df_2021_h1)
    plt.bar(df_2021_h1["date"], df_2021_h1["newAntibodyTestsByPublishDate"], color="green", label="Daily")
    plt.plot(df_2021_h1["date"], df_2021_h1["moving_average"], color="red", label="7-day roling average")
    plt.gca().yaxis.set_minor_locator(ticker.MultipleLocator(1000))
    plt.ylabel("Daily cases")
    plt.xlim((list(df_2021_h1["date"])[0], list(df_2021_h1["date"])[-1]))

    plt.grid(axis="y", which="both")
    plt.title(f"COVID cases from {start.date().isoformat()} until {end.date().isoformat()} (remade)")
    plt.xticks(rotation=90)
    plt.savefig(f"Chart of UK Positive COVID-19 Antibody Tests from {start.date().isoformat()} to {end.date().isoformat()} (remade).svg")
    
plot_cases(df, datetime.datetime(2021, 1, 1), datetime.datetime(2021, 7, 1))
plt.clf()
plot_cases(df, datetime.datetime(2021, 7, 1), datetime.datetime(2022, 1, 1))
plt.clf()
plot_cases(df, datetime.datetime(2022, 1, 1), datetime.datetime(2022, 7, 1))
plt.clf()
plot_cases(df, datetime.datetime(2022, 7, 1), datetime.datetime(2023, 1, 1))
Own work
Talpedia