Это 8-й день моего участия в ноябрьском испытании обновлений.Подробности о событии:Вызов последнего обновления 2021 г.
получить данные
Данные: название заголовка, автор-автор, оценка рейтинга, сколько людей видели статистику
Получить 10 лучших авторов
gradeDict, чтобы получить среднюю оценку для каждого автора, используйтеsorted()Функция получает первые 10 данных с самыми высокими значениями вgradeDict.
df = pd.read_csv("clean_data.csv")
gradeDict = {}
countDict = {}
for author, grade in zip(df.author, df.grade):
if author not in countDict.keys():
countDict[author] = 1
gradeDict[author] = grade
else:
countDict[author] = countDict[author] + 1
gradeDict[author] = gradeDict[author] + grade
for key in gradeDict.keys():
gradeDict[key] = gradeDict[key] / countDict[key]
gradeList = sorted(gradeDict.items(), key=lambda x: x[1], reverse=True)[0:10]
countList = sorted(countDict.items(), key=lambda x: x[1], reverse=True)[0:10]
labels = []
values = []
for i in countList:
labels.append(i[0])
values.append(i[1])
Вывод меток и значений
Круговая диаграмма
взорвать указывает интервал между каждым сектором, значение по умолчанию равно 0
explode = [0.05]
for i in range(1, 10):
explode.append(0.02)
Измените стиль китайского шрифта, который здесь установлен на шрифт SimHei, или его можно заменить другими шрифтами, иначе он будет искажен.
plt.rcParams['font.sans-serif'] = 'SimHei'
нарисовать круговую диаграмму,autopct
Установите процентный формат отображения каждого сектора на круговой диаграмме,%0.2f%%Два десятичных процента.pctdistance
Укажите шкалу положения autopct, значение по умолчанию 0,6, процентное расстояние от центра круга, чем меньше значение, тем ближе к центру круга,labeldistance
Положение отрисовки метки метки относительно отношения радиуса, значение по умолчанию равно 1,1, если
plt.savefig
Сохраните картинку как картинку, но она должна быть размещена перед plt.show(), иначе сохранение будет пустым
plt.pie(values, labels=labels, explode=explode, autopct="%.2f%%", pctdistance=0.7)
plt.title("评分前十名发布的文章个数")
plt.savefig("饼图.png")
plt.show()
столбчатая диаграмма
plt.bar
нарисовать горизонтальную столбчатую диаграмму,plt.barh
Чтобы нарисовать вертикальную столбчатую диаграмму, вы можете передатьcolorизменить цвет гистограммы или цвет каждого столбца; установить ширину гистограммы,bar()метод использованияwidth настраивать,barh()метод использованияheight настраивать
# plt.barh(range(len(labels)), values, tick_label=labels)
# plt.bar(range(len(labels)), values, tick_label=labels, color="#4CAF50")
plt.bar(range(len(labels)), values, tick_label=labels)
plt.xticks
Установите метку по оси x, по умолчанию там стоит, здесь измените угол метки на 45 градусов,plt.yticks
Вы можете изменить масштаб метки оси Y, чтобы сделать ее более красивой;plt.text
Отображение конкретных чисел на столбчатой диаграмме
plt.xticks(range(len(labels)), labels, rotation=45)
plt.yticks([0, 2, 4, 6, 8, 10])
for x, y in zip(range(len(labels)), values):
plt.text(x, y+0.1, "%d" % y, ha="center")
plt.title("评分前十名发布的文章个数")
plt.xlabel("作者")
plt.ylabel("文章数")
plt.show()
линейный график
label=u'111'
Данные легенды, чтобы добавитьplt.legend()
для отображения; например'go-'
это зеленая пунктирная сплошная линия
# 模拟数据
labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
values222 = [5, 7, 9, 7, 5, 3, 4, 8, 6, 3]
plt.plot(labels, values, 'go-', label=u'111')
plt.plot(labels, values222, 'b*-', label=u'222')
plt.xticks(labels)
for x, y in zip(range(len(labels)), values):
plt.text(x, y+0.1, "%.2f" % y, ha="center")
plt.legend() # 让图例生效
plt.show()
Резко остановись??? ускользнуть