自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊一聊美化Matplotlib三個(gè)小技巧

大數(shù)據(jù) 數(shù)據(jù)可視化
Matplotlib是Python的數(shù)據(jù)可視化庫的基礎(chǔ)。它是其他可視化工具(如Seaborn)的基礎(chǔ)。

Matplotlib提供了很大的靈活性,因此您可以自定義或調(diào)整幾乎所有的圖表。但是想要完全控制可視化就需要編寫更多的代碼。

圖片

在本文中,我們將介紹3個(gè)可以用于定制Matplotlib圖表的技巧:

  • 減少x軸或y軸上的刻度數(shù)
  • 添加一個(gè)輔助y軸
  • 共享x軸的子圖坐標(biāo)對(duì)齊

本文中我們將使用折線圖為例,但這些技巧也可以應(yīng)用于其他類型的圖。我創(chuàng)建了一個(gè)數(shù)據(jù)集模擬價(jià)格和銷售數(shù)據(jù)。

import pandas as pd
import numpy as np
df = pd.read_csv("mock_sales_data.csv", nrows=100)
df.head()

圖片

數(shù)據(jù)包含日期、價(jià)格和銷售數(shù)量列。只顯示了數(shù)據(jù)集的前100行。

減少刻度數(shù)

如果在軸上繪制的數(shù)據(jù)點(diǎn)數(shù)量很多,刻度看起來非常的緊湊,甚至可能重疊。在處理時(shí)間序列數(shù)據(jù)時(shí),x軸通常包含占用大量空間的日期,所以可以減少軸上的刻度數(shù)來提高顯示效果。

讓我們先做一個(gè)不限制x軸刻度數(shù)的例子。

import matplotlib.pyplot as plt
plt.style.use("seaborn-darkgrid")

plt.figure(figsize=(12, 6))
plt.plot(df["Date"], df["Price"])
plt.show()

圖片

可以看到X軸的刻度重疊并且根本無法顯示完整。下面我們添加設(shè)置只顯示部分的刻度,這樣可以完整顯示。

plt.figure(figsize=(12, 6))
plt.plot(df["Date"], df["Price"])
#每15個(gè)刻度顯示一次
plt.xticks(np.arange(0, len(df), 15), fontsize=12)
plt.yticks(fontsize=12)

plt.show()

圖片

我們使用NumPy的arange函數(shù)來指定標(biāo)記的位置,現(xiàn)在看起來好多了。

使用輔助軸

如果想在同一個(gè)圖上顯示兩個(gè)變量。例如將產(chǎn)品的價(jià)格和銷售數(shù)量繪制在一起查看價(jià)格對(duì)銷售數(shù)量的影響。

我們的DataFrame中的銷售數(shù)量和價(jià)格列顯示在同一線圖上,只有一個(gè)y軸。

圖片

可以看到價(jià)格和銷售數(shù)量的取值范圍差距很大我們幾乎看不到銷售的變化,這時(shí)可以使用輔助軸來指定另外一條線的取值范圍。

fig, ax1 = plt.subplots(figsize=(12,6))
ax2 = ax1.twinx()

ax1.plot(df["Date"], df["Price"])
ax2.plot(df["Date"], df["SalesQty"], color="orange")
ax1.set_ylabel("Price", fontsize=15)
ax2.set_ylabel("SalesQty", fontsize=15)
ax1.tick_params(axis='both', which='major', labelsize=12)
ax2.tick_params(axis='both', which='major', labelsize=12)

plt.xticks(np.arange(0, len(df), 15))
ax1.grid(False)
ax2.grid(False)

plt.show()

圖片

看起來好多了。我們可以清楚的觀察到價(jià)格與銷售量之間的反比關(guān)系。

共享x軸的子圖坐標(biāo)對(duì)齊

我們可以在一個(gè)Figure對(duì)象上創(chuàng)建多個(gè)子圖。Matplotlib允許使用subplot函數(shù)創(chuàng)建子圖格。例如下面的代碼行創(chuàng)建了一個(gè)包含4個(gè)子圖的2x2網(wǎng)格圖。

fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=2, ncols=2)

使用nrows和ncols參數(shù)自定義網(wǎng)格的大小。

如果我們想在2個(gè)子圖中共享X軸怎么辦呢?我們可以使用tight_layout函數(shù)。它可以用于調(diào)整子圖之間的填充

fig, (ax1, ax2) = plt.subplots(
nrows=2, ncols=1,
sharex=True,
figsize=(12, 8)
)
fig.tight_layout(pad=2)

ax1.plot(df["Date"], df["Price"])
ax1.set_title("Price", fontsize=15)

ax2.plot(df["Date"], df["SalesQty"])
ax2.set_title("SalesQty", fontsize=15)

ax1.tick_params(axis='both', which='major', labelsize=12)
ax2.tick_params(axis='both', which='major', labelsize=12)
plt.xticks(np.arange(0, len(df), 15), fontsize=12)
plt.show()

圖片

可以看到2個(gè)子圖的X軸坐標(biāo)(日期)都已經(jīng)對(duì)齊了,這對(duì)于分析時(shí)間序列時(shí)非常有用的,例如想對(duì)比2個(gè)產(chǎn)品或者2個(gè)不同的門店在同一時(shí)期的銷售情況,通過對(duì)齊日期可以給出非常好的直觀判斷。

以上就是3個(gè)Matplotlib可視化的小技巧,這些技巧肯定會(huì)幫助你創(chuàng)建信息更豐富、功能更強(qiáng)大的數(shù)據(jù)可視化圖表。


責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2020-09-15 12:45:48

系統(tǒng)LinuxUnix

2022-10-19 15:20:58

pandas數(shù)據(jù)處理庫技巧

2022-01-19 17:11:05

JavaScript數(shù)據(jù)工具

2021-08-04 09:32:05

Typescript 技巧Partial

2018-04-27 09:22:21

數(shù)據(jù)存儲(chǔ)技巧

2019-03-21 11:04:22

安全標(biāo)準(zhǔn)信息

2024-07-24 11:40:33

2021-02-22 14:04:47

Vue框架項(xiàng)目

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2018-06-07 13:17:12

契約測(cè)試單元測(cè)試API測(cè)試

2021-05-12 18:02:23

方法創(chuàng)建線程

2022-01-11 15:44:15

JavaScript圖表庫數(shù)據(jù)

2021-08-02 07:57:02

內(nèi)存Go語言

2022-09-26 08:03:25

VMware虛擬機(jī)

2022-08-08 08:25:21

Javajar 文件

2022-11-01 08:46:20

責(zé)任鏈模式對(duì)象

2018-11-29 09:13:47

CPU中斷控制器

2019-02-13 14:15:59

Linux版本Fedora
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)