精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

輕松玩轉Python,五個步驟打造驚艷的折線圖

開發 前端
Matplotlib可以快速輕松地使用現成的函數繪制圖表,但是微調步驟需要花費更多精力。今天就來介紹如何使用Matplotlib繪制吸引人的圖表。

1、簡介

圖片圖片

最富有的5個國家的GDP隨時間的演變

Matplotlib可以快速輕松地使用現成的函數繪制圖表,但是微調步驟需要花費更多精力。今天就來介紹如何使用Matplotlib繪制吸引人的圖表。

本文詳細介紹如何從下面這張圖↓

圖片圖片

優化為下面這張圖↓

圖片圖片

2、數據

為了說明方法,本文使用了包含過去50年各國GDP信息的公開數據集:

來源:世界銀行國民賬戶數據和OECD(經濟合作與發展組織)國民賬戶數據文件。

許可證URL:https://datacatalog.worldbank.org/public-licenses#cc-by

導入必要的軟件包、讀取數據、繪制圖表,對2022年的GDP前20個國家進行篩選:

import pandas as pd
import matplotlib.pyplot as plt
from datetime import timedelta

# 讀取數據
df = pd.read_csv('88a1e584-0a94-4e73-b650-749332831ef4_Data.csv', sep=',')
df.drop(['Series Name', 'Series Code', 'Country Code'], axis=1, inplace=True)
df = df.dropna(subset=['Country Name'])

# 對 2022 年最富有的 20 個國家進行篩選
top_20_countries = df[df['Year'] == '2022-01-01'].sort_values('GDP', ascending = False).head(20)['Country Name'].tolist()
df = df[df['Country Name'].isin(top_20_countries)].reset_index(drop = True)

df.head()

3、基本圖

首先,只需四行代碼就足以創建圖形,并循環遍歷各國以繪制它們各自的折線:

# 創建圖形和坐標軸對象,指定尺寸和DPI
fig, ax = plt.subplots(figsize=(13.33,7.5), dpi = 96)

# 繪制折線
for country in top_20_countries:
    data = df[df['Country Name'] == country]
    line = ax.plot(data['Year'], data['GDP'], label=country)

最基本的Matplotlib折線圖最基本的Matplotlib折線圖

4、基本要素

接下來向圖表中添加一些關鍵內容,使其更易于觀眾閱讀。

  • 網格

為了提高圖表的可讀性,網格是必不可少的。將網格的透明度設置為0.5,這樣它們就不會對數據點造成太大干擾。

  • X軸和Y軸重新格式化

為了更全面地了解微調的可能性,本文故意添加了更多的參數。例如,X軸不需要major_formatter 和major_locator對象,因為本文只顯示年份,但如果讀者的X軸包含其他數字,這就會派上用場。

  • 圖例

由于要顯示很多條線,因此添加標簽和圖例非常重要,這樣讀者就能知道哪條線是哪條線。

# 添加圖例
ax.legend(loc="best", fnotallow=8)

# 創建網格
ax.grid(which="major", axis='x', color='#DAD8D7', alpha=0.5, zorder=1)
ax.grid(which="major", axis='y', color='#DAD8D7', alpha=0.5, zorder=1)

# 重新格式化x軸標簽和刻度線標簽
ax.set_xlabel('', fnotallow=12, labelpad=10) # 不需要軸標簽
ax.xaxis.set_label_position("bottom")
#ax.xaxis.set_major_formatter(lambda s, i : f'{s:,.0f}') #以防萬一我們需要額外的格式設置
#ax.xaxis.set_major_locator(MaxNLocator(integer=True)) #以防我們需要額外的格式化
ax.xaxis.set_tick_params(pad=2, labelbottom=True, bottom=True, labelsize=12, labelrotatinotallow=0)

# 重新格式化y軸
ax.set_ylabel('GDP (Billions USD)', fnotallow=12, labelpad=10)
ax.yaxis.set_label_position("left")
ax.yaxis.set_major_formatter(lambda s, i : f'{s*10**-9:,.0f}')
#ax.yaxis.set_major_locator(MaxNLocator(integer=True)) #以防我們需要額外的格式化
ax.yaxis.set_tick_params(pad=2, labeltop=False, labelbottom=True, bottom=False, labelsize=12)

圖片圖片

為本文的圖表添加一些必要的功能

5、突出重點

接下來,突出顯示最富有的五個國家,并跟蹤其GDP隨時間的變化。在字典中定義了特定的顏色和線條樣式,并對代碼稍作修改,以單獨繪制它們。

# 顏色和線條樣式
colors_dict = {'United States': '#014f86', 'China': '#DC0000', 'Japan': '#ff4d6d', 'Germany': '#403d39', 'India': '#6a994e'}
line_styles_dict = {'United States': '-', 'China': '-', 'Japan': '-', 'Germany': '-', 'India': '-'}

# 繪制前5條線
for country in top_20_countries[:5]:
    color = colors_dict.get(country, 'grey')  # 從字典中獲取顏色,如果找不到,默認為灰色
    line_style = line_styles_dict.get(country, '-')  # 從字典中獲取線條樣式,如果未找到,默認為實線
    data = df[df['Country Name'] == country]
    line = ax.plot(data['Year'], data['GDP'], color=color, linestyle=line_style, zorder=2, label=country)

# 添加圖例
ax.legend(loc="best", fnotallow=8)

# 繪制剩余部分
for country in top_20_countries[5:]:
    data = df[df['Country Name'] == country]
    line = ax.plot(data['Year'], data['GDP'], color='grey', linestyle=':', linewidth=0.5, zorder=2)

圖片圖片

仍然是相同的折線圖,但故事更清晰了

6、修改外觀

為本文的圖表添加一些功能,可以使其看起來更加專業。它們將位于所有圖表的頂部,并且與本文中使用的數據無關。

通過下面的代碼片段,這些調整將很容易實現。

讀者可以根據自己的需求對其進行調整,以創建自己的視覺風格。

  • 邊框

邊框是圖表周圍可見的框。除了左邊的邊框會設置得稍微粗一些外,其余的邊框都將被移除。

  • 頂部的紅線和矩形

在標題上方添加一條紅線和一個矩形,以便將圖表與上方的文本很好地隔離開來。

  • 標題和副標題

添加標題來介紹圖表,副標題可以用來進一步解釋內容,甚至呈現初步的結論。

  • 來源

在所有制作的圖表中都必不可少的一項。

  • 調整邊距

調整圖表區域周圍的邊距,以確保充分利用所有可用空間。

  • 設置白色背景

將背景設置為白色(默認為透明)在通過電子郵件、Teams或任何其他工具發送圖表時非常有用,因為透明背景可能會造成問題。

# 移除邊框
ax.spines[['top','right','bottom']].set_visible(False)

# 加粗左側邊框
ax.spines['left'].set_linewidth(1.1)

# 在頂部添加紅線和矩形
ax.plot([0.05, .9], [.98, .98], transform=fig.transFigure, clip_notallow=False, color='#E3120B', linewidth=.6)
ax.add_patch(plt.Rectangle((0.05,.98), 0.04, -0.02, facecolor='#E3120B', transform=fig.transFigure, clip_notallow=False, linewidth = 0))

# 添加標題和副標題
ax.text(x=0.05, y=.93, s="Evolution of the 20 Richest Countries GDP over the Past 50 Years", transform=fig.transFigure, ha='left', fnotallow=14, weight='bold', alpha=.8)
ax.text(x=0.05, y=.90, s="Focus on the current 5 richest countries from 1973 to 2022", transform=fig.transFigure, ha='left', fnotallow=12, alpha=.8)

# 設置來源文本
ax.text(x=0.05, y=0.12, s="Source: World Bank - https://databank.worldbank.org/", transform=fig.transFigure, ha='left', fnotallow=10, alpha=.7)

# 調整繪圖區域周圍的邊距
plt.subplots_adjust(left=None, bottom=0.2, right=None, top=0.85, wspace=None, hspace=None)

# 設置白色背景
fig.patch.set_facecolor('white')

本文的視覺風格應用于圖表,使其更加整潔本文的視覺風格應用于圖表,使其更加整潔

7、點睛之筆

為了得到在文章開頭介紹的最終結果,剩下要做的就是實現這幾個額外的組件:

  • 終點標記

這些元素純粹是為了美觀,但能為本文的折線圖增添一份亮點。用標記突出顯示每條折線的最后一個點,使其更加醒目。

  • 注釋

借助annotate方法,可以突出顯示圖表中的特定點,并在其上直接添加注釋。

# 繪制前5條線
for country in top_20_countries[:5]:
    color = colors_dict.get(country, 'grey')  # 從字典中獲取顏色,如果找不到,默認為黑色
    line_style = line_styles_dict.get(country, '-')  # 從字典中獲取線條樣式,如果找不到,默認為實線
    data = df[df['Country Name'] == country]
    line = ax.plot(data['Year'], data['GDP'], color=color, linestyle=line_style, zorder=2, label = country)
    ax.plot(data['Year'].iloc[-1], data['GDP'].iloc[-1], 'o', color=color, markersize=10, alpha=0.3)
    ax.plot(data['Year'].iloc[-1], data['GDP'].iloc[-1], 'o', color=color, markersize=5)

# 在圖表上添加一些文字
ax.annotate('During the 2000s,\nChina began experiencing rapid economic growth,\noutpacing all other countries.',
            (data['Year'].iloc[-18], 2000000000000),
            xytext=(data['Year'].iloc[-28]-timedelta(days=500), 18000000000000),
            ha='left', fnotallow=9, arrowprops=dict(arrowstyle='-|>', facecolor='k', cnotallow="arc3,rad=-0.15"))

圖片圖片

最終成果:這個折線圖清晰易讀

8、結語

本文分享了使用Matplotlib繪制折線圖的知識,同時提供了實用可重復使用的代碼片段。

責任編輯:武曉燕 來源: Python學研大本營
相關推薦

2011-12-21 13:25:33

JavaJFreeChart

2020-05-25 15:00:41

matplotlibplot()折線圖

2022-02-23 15:17:04

鴻蒙OpenHarmonJacascript

2022-11-07 08:42:50

iOS 16SwiftUI

2021-01-08 10:32:24

Charts折線圖數據可視化

2020-04-25 20:11:23

Python熱力圖代碼

2023-06-27 13:46:20

2018-04-24 16:01:46

代碼數據可視化Python

2020-03-18 09:45:56

VPN零信任網絡網絡安全

2016-01-08 19:16:33

數據庫DevOps

2025-06-10 08:25:00

Python文本分析數據分析

2023-03-19 17:24:43

2013-11-19 17:39:15

hypervisor私有云

2017-01-19 10:44:54

私有云云計算虛擬化

2025-02-24 00:00:03

DDoS攻擊工具

2023-03-06 08:48:52

2022-11-18 09:03:09

SwiftUIiOS16

2023-03-06 08:03:10

Python可視化工具

2021-11-10 16:07:01

鴻蒙HarmonyOS應用

2020-09-24 10:57:12

編程函數式前端
點贊
收藏

51CTO技術棧公眾號

超薄丝袜一区二区| 在线播放/欧美激情| 欧美极品jizzhd欧美| 中文字幕日韩第一页| 希岛爱理av一区二区三区| 日韩欧美一区二区视频| 久草热视频在线观看| 高清日韩av电影| 国产麻豆成人传媒免费观看| 91极品视频在线| 亚洲一级黄色录像| av综合网址| 欧美色图12p| 免费国产黄色网址| 欧美jizz18性欧美| 91社区在线播放| 97视频热人人精品| 久久这里只有精品9| 黄色亚洲精品| 久久精品国产久精国产思思| 国产亚洲色婷婷久久99精品91| 人人精品久久| 欧美日韩国产一中文字不卡 | 无遮挡又爽又刺激的视频| 蜜桃视频网站在线观看| 91小视频在线| 成人免费看片网址| 中文字幕无线码一区| 亚洲美女少妇无套啪啪呻吟| 久久精品免费播放| 青青草福利视频| 国产精品久久久网站| 欧美一区二区在线看| 国产又大又黄又粗又爽| 丁香六月综合| 精品国产乱码久久久久久天美| 天堂v在线视频| 国产高清一级毛片在线不卡| av不卡一区二区三区| www.久久久| 国产精品免费无遮挡| 青青国产91久久久久久 | 国产无人区码熟妇毛片多| 欧美黄色一区| 大胆欧美人体视频| 伊人久久久久久久久久久久久久| 精品av一区二区| 亚洲人成电影在线| 波多野结衣a v在线| 性欧美xxxx免费岛国不卡电影| 精品处破学生在线二十三| www.偷拍.com| 视频一区在线| 日韩欧美三级在线| 亚洲三级在线视频| 欧美精品三级在线| 日韩一区二区免费高清| 日本r级电影在线观看| 国产精品视频一区视频二区| 91精品国产一区二区| 亚洲涩涩在线观看| 国产在线视频欧美一区| 欧美一级电影网站| 熟女人妻一区二区三区免费看| gogo人体一区| 亚洲国产精品专区久久| 特大黑人巨人吊xxxx| 亚洲丁香日韩| 亚洲少妇中文在线| 18啪啪污污免费网站| 久久国产精品亚洲人一区二区三区 | 日韩一区二区三区不卡| 91蜜桃免费观看视频| 欧美日韩三区四区| 在线观看黄色av| 综合久久久久久| 中文字幕人妻熟女人妻洋洋| cao在线视频| 在线亚洲精品福利网址导航| 91国内在线播放| 成人av激情人伦小说| 精品亚洲一区二区三区在线观看 | 综合av第一页| 免费无码毛片一区二三区| 亚洲最大成人| 在线播放欧美女士性生活| 中文字幕无人区二| 天堂成人娱乐在线视频免费播放网站| 亚洲人成自拍网站| 印度午夜性春猛xxx交| 亚洲欧洲一区二区天堂久久| 国产成人精品视频在线观看| 国产精品欧美综合亚洲| 不卡视频一二三| 亚洲欧美精品| 激情aⅴ欧美一区二区欲海潮| 在线影视一区二区三区| 国产一精品一aⅴ一免费| 少妇精品久久久一区二区三区| 日韩视频亚洲视频| 视频一区二区三区四区五区| 久久99久久99小草精品免视看| 国产精品99久久久久久久| 精品成人一区二区三区免费视频| 自拍偷拍亚洲综合| 99精品视频播放| 亚洲小说春色综合另类电影| 亚洲最大在线视频| 国产在线观看99| 蜜臀av一区二区在线观看| 91视频99| 日本在线视频观看| 欧美日韩国产精品一区二区三区四区| 中文字幕日韩综合| 亚洲性视频大全| 久久久久国色av免费观看性色 | 中文不卡1区2区3区| 在线成人高清不卡| 中文字幕第4页| 在线欧美亚洲| 91系列在线观看| 国产精品天堂| 欧美香蕉大胸在线视频观看| 少妇高潮一69aⅹ| 日韩片欧美片| 国产精品久久久av| 五月天婷婷视频| 亚洲综合在线视频| 亚洲日本黄色片| 欧美丝袜丝交足nylons172| 91高清免费视频| 成人无码一区二区三区| 亚洲色图视频网| 97超碰成人在线| 国产亚洲一区二区三区不卡| 韩国19禁主播vip福利视频| 国产精品视频无码| 国产精品国产三级国产有无不卡| 国产性生交xxxxx免费| 欧美美女在线直播| 国内精品久久久久影院 日本资源| 国产偷拍一区二区| 亚洲色图20p| 91pony九色| 亚洲澳门在线| 亚洲最大福利网站| 在线免费观看a视频| 91精品国产丝袜白色高跟鞋| 日韩视频中文字幕在线观看| 国产一区高清在线| 国产性生活免费视频| 国产精品国产三级在线观看| 美女视频久久黄| 国产视频aaa| 一区二区三区色| 蜜臀视频在线观看| 国产日韩1区| 精品国产乱码久久久久久丨区2区| 成年人黄色大片在线| 日韩h在线观看| 手机在线看片1024| 国产欧美日韩视频在线观看| 成人3d动漫一区二区三区| 日韩片欧美片| 99久久伊人精品影院| 草草影院在线| 亚洲欧美激情在线视频| 凹凸精品一区二区三区| 中文字幕一区在线观看| 久久精品一卡二卡| 影音先锋日韩资源| 欧洲一区二区在线观看| 国产亚洲人成a在线v网站 | 激情亚洲综合在线| 成人在线免费观看网址| 成人中文字幕视频| 秋霞成人午夜鲁丝一区二区三区| 国产女人在线观看| 欧美日韩不卡视频| 国产性生活网站| 久久久久久久久久久久久夜| 中文字幕22页| 亚洲国产一区二区三区高清| 欧美在线3区| 96sao精品免费视频观看| 国模私拍一区二区三区| 青青视频在线观| 7777精品伊人久久久大香线蕉| 国产亚洲精品久久777777| 国产午夜精品理论片a级大结局| 国内国产精品天干天干| 一本久道综合久久精品| 亚洲图片都市激情| 欧美在线关看| 91亚洲va在线va天堂va国| 美女扒开腿让男人桶爽久久软| 丝袜情趣国产精品| 天天操天天干天天| 欧美卡1卡2卡| 国产又黄又猛又粗又爽| 亚洲欧洲一区二区在线播放| 99久久免费看精品国产一区| 免费观看久久久4p| 欧美大片在线播放| 99热国内精品| 欧美日韩免费高清| 国产乱论精品| 成人在线国产精品| 91精品影视| 久久久在线免费观看| 亚洲s色大片| 亚洲理论在线a中文字幕| 国产富婆一级全黄大片| 欧美网站大全在线观看| 国产 日韩 欧美 在线| 亚洲黄色片在线观看| 九一在线免费观看| 久久九九影视网| 日本69式三人交| 国产精品一二三区在线| 男生操女生视频在线观看| 日韩精品成人一区二区三区| 日本福利视频一区| 欧美99在线视频观看| 亚洲一区二区三区精品动漫| 国产一区二区欧美| 久久综合精品一区| 欧美成人午夜77777| 国产福利久久精品| ccyy激情综合| 成人久久18免费网站漫画| 疯狂欧洲av久久成人av电影| 成人免费观看网址| 日韩毛片网站| 91精品视频免费看| 未满十八勿进黄网站一区不卡| 国产精品第七十二页| 电影一区二区三区| 庆余年2免费日韩剧观看大牛| 国产污视频在线播放| 欧美精品aaa| 成人高潮aa毛片免费| 欧美激情亚洲精品| bl视频在线免费观看| 韩国三级日本三级少妇99| 波多野结衣在线高清| 欧美激情一区二区三级高清视频| 91精选在线| 欧美国产高跟鞋裸体秀xxxhd| 青青青国内视频在线观看软件| 欧美成人在线网站| 丝袜综合欧美| 午夜精品美女自拍福到在线| av丝袜在线| 91tv亚洲精品香蕉国产一区7ujn| 交100部在线观看| 清纯唯美日韩制服另类| 欧美va在线观看| 国产精品中文字幕在线观看| 亚洲图片小说区| 高清视频在线观看一区| 久久婷婷国产| 欧美亚洲另类久久综合| 成人一级毛片| 中国女人做爰视频| 亚洲福利精品| 国产xxxxx视频| 久久国产尿小便嘘嘘| 91视频福利网| 99精品视频在线观看| 精品无人区无码乱码毛片国产| 中文字幕av免费专区久久| 中文字幕美女视频| 夜夜嗨av一区二区三区网页| 国产精品美女久久久久av爽| 日韩欧美在线视频日韩欧美在线视频 | 亚洲欧美日韩在线观看a三区 | 亚洲国产欧美视频| 久久香蕉精品| 午夜精品久久久久久久99热影院| 国产精品一品二品| 精品人妻一区二区三区日产乱码卜| 久久久久久久国产精品影院| 天堂资源在线视频| 亚洲激情欧美激情| 超碰中文字幕在线| 欧美高清视频不卡网| 可以免费观看的毛片| 一区二区三区 在线观看视| 超碰免费公开在线| 欧美亚洲另类视频| 电影91久久久| 久久久久久久有限公司| 首页国产精品| 久久久999视频| 精品亚洲欧美一区| 瑟瑟视频在线观看| 亚洲欧美一区二区久久| 久久精品视频1| 欧美一区二区视频观看视频| 国产午夜在线视频| 久久久欧美精品| 天天综合91| 欧洲精品码一区二区三区免费看| 综合一区av| 中文字幕在线导航| jvid福利写真一区二区三区| 91精品少妇一区二区三区蜜桃臀| 精品久久久久久亚洲精品| 国产99对白在线播放| 亚洲视频999| 2020av在线| 7777精品伊久久久大香线蕉语言 | 国产成a人亚洲| 丁香激情五月少妇| 午夜欧美大尺度福利影院在线看 | 国产日韩另类视频一区| av色综合网| 亚洲精品午夜av福利久久蜜桃| wwwxxx黄色片| 99视频一区二区| 国产一级黄色av| 91精品一区二区三区久久久久久| 触手亚洲一区二区三区| 91国产高清在线| 亚洲成人偷拍| 国产大尺度在线观看| 青青草国产精品亚洲专区无| 黄色片视频免费观看| 亚洲sss视频在线视频| 精品国产无码一区二区三区| 日韩视频亚洲视频| 国内精品伊人| 亚洲欧洲精品在线观看| 视频一区视频二区中文字幕| 少妇特黄一区二区三区| 天天操天天干天天综合网| 丰满少妇高潮在线观看| 久久99视频免费| 日本久久伊人| 毛片在线视频观看| 国产成都精品91一区二区三| 免费在线一级片| 日韩一级片在线播放| av文字幕在线观看| av成人综合网| 亚洲天堂男人| 波多野结衣视频播放| 五月综合激情网| 日本免费一区二区三区最新| 日韩美女在线观看| 欧美日韩在线二区| 在线观看免费的av| 亚洲人成精品久久久久| 99国产成人精品| 久久久久久国产免费| 欧美丝袜足交| 97公开免费视频| 亚洲天堂福利av| 高潮毛片7777777毛片| 国产69久久精品成人| 精品国内自产拍在线观看视频 | 日韩av在线影院| 韩日成人影院| 亚洲在线观看一区| 国产精品一区二区你懂的| 成人免费看片98| 亚洲男人天天操| 四虎地址8848精品| 成人免费a级片| 久久久久亚洲蜜桃| 国产又黄又粗又长| 久久久噜噜噜久久| 一区三区在线欧| 五月激情婷婷在线| 亚洲成人动漫一区| 国产在线一二三区| 5g国产欧美日韩视频| 亚洲一区黄色| 黄色片网站在线播放| 日韩欧美成人午夜| 韩国美女久久| 超碰10000| 久久久五月婷婷| 99热这里只有精品66| 欧美野外猛男的大粗鳮| 99精品全国免费观看视频软件| 免费不卡的av| 在线观看视频一区| 黑人极品ⅴideos精品欧美棵| 日本欧洲国产一区二区| 国产精品资源网| 无码人妻一区二区三区免费| 美女av一区二区| 男男gay无套免费视频欧美| 深夜做爰性大片蜜桃| 色综合一个色综合| 四虎影院观看视频在线观看| 手机在线观看国产精品| 成人免费视频一区|