安利 5 个拍案叫绝的 Matplotlib 骚操作!

微信扫一扫,分享到朋友圈

安利 5 个拍案叫绝的 Matplotlib 骚操作!

公众号:Python数据科学

大家都知道,Matplotlib是Python的可视化库,功能很强,可以绘制各种图。一些常规用法前不久分享过Matplotlib官方出品的cheatsheet: Matplotlib官方小抄手册公开,配套可视化代码已打包!

但是!今天我们不走寻常路,专挑几个贼骚的操作分享下.

1. Span Selector

Span SelectorMatplotlib 中的鼠标小部件, widgets 是用于包含一些交互功能的python对象。 Span Selector 可以通过鼠标框选,方便地查看选定区域的最大值和最小值。

下面是代码,首先创建一个基本折线图作为例子。然后,我们调用 SpanSelector 方法并使用它来选择一个区域,然后在该区域中显示最大值和最小值。

import matplotlib.pyplot as plt
from matplotlib.widgets import SpanSelector
def onselect(xmin, xmax):
print(xmin, xmax)
return xmin, xmax
fig, ax = plt.subplots()
ax.plot([1,2,3,4,5,6,7], [10, 50, 100, 23,15,28,45])
span = SpanSelector(ax, onselect, 'horizontal', useblit=True, rectprops=dict(alpha=0.5, facecolor='red'))
plt.show()

下面是具体操作。

2. Broken Barh

Broken 的水平条形图是不连续具有间隙的图,它可用于数据值相差很大的情况下,例如,包含极端温度范围的数据集。在这种情况下,Broken的水平条形图非常合适,因为它们可以同时绘制最大和最小范围。

python模块 matplotlib.broken_barh() 用于绘制Broken的水平条形图。

import matplotlib.pyplot as plt
#Defining the x and y ranges
xranges = [(5,5), (20,5),(20,7)]
yrange = (2,1)
#Plotting the broken bar chart
plt.broken_barh(xranges, yrange, facecolors='green')
xranges = [(6,2), (17,5),(50,2)]
yrange = (15,1)
plt.broken_barh(xranges, yrange, facecolors='orange')
xranges = [(5,2), (28,5),(40,2)]
yrange = (30,1)
plt.broken_barh(xranges, yrange, facecolors='red')
plt.xlabel('Sales')
plt.ylabel('Days of the Month')
plt.show()

3. Table Demo

Matplotlib 的表格功能也是可以在图中显示表格的。当我们希望以条形图的形式快速查看表格中的值时,这特别方便。表格可以放置在图表的顶部,底部或侧面。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(5, 8)*.7
plt.plot(x.mean(axis=0), '-o', label='average per column')
plt.xticks([])
plt.table(cellText=[['%1.2f' % xxx for xxx in xx] for xx in x],cellColours=plt.cm.GnBu(x),loc='bottom')
plt.show()

4. Watermark Images

有时候我们觉得可视化的背景太单调了,想增加点趣味性,比如将与数据相关的图像作为水印覆盖到可视化图形上。下面就以NBA的詹皇为例试试水,最后呈现出詹皇的数据,同时背景是詹皇本人。

首先,导入要用的数据集,图片和必要的库 pandas

import numpy as np
import matplotlib.image as image
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('income.csv')
im = image.imread('Lebron_James.jpeg') # Image

pandas 过滤掉仅由勒布朗组成的数据。

lebron_james = df[df['Name']=='LeBron James']

然后像下面这样操作,使用 figimage 添加水印就ok了。

fig, ax = plt.subplots()
ax.grid()
ax.plot('Year','earnings ($ million)',data=lebron_james)
ax.set_title("LeBron James earnings in US$(millions)")
fig.figimage(im, 60, 40,cmap='ocean', alpha=.2)
plt.show()

5. XKCD Plots

下面这个操作更有趣味性(更骚)。

如果你想让 Matplotlib 图上添加一些扭曲,可以简单地 xkcd()pyplot 对象上调用方法,如下所示。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('https://raw.githubusercontent.com/parulnith/Website-articles-datasets/master/India%20GDP%20Growth%20Rate%20.csv', parse_dates=['Year'])
df['Year'] = df['Year'].apply(lambda x: pd.Timestamp(x).strftime('%Y'))
#calling xkcd() method
plt.xkcd(scale=5, length=400)
df.plot(x='Year',y='GDP Growth (%)',kind='bar')
plt.ylabel('GDP Growth (%)')
plt.xticks(rotation=-20)
plt.figure(figsize=(10,8))
plt.show()

先分享这些,如果觉得有帮助,还请 多分享点个赞

欢迎大家关注我的原创微信公众号 Python数据科学 ,专注于写基于Python的数据算法、机器学习、深度学习硬核干货。

微信扫一扫,分享到朋友圈

安利 5 个拍案叫绝的 Matplotlib 骚操作!

马斯克称未来5年特斯拉会更有价值 网友:他自信爆棚

上一篇

调查:约1/4美国成年人通过YouTube获取新闻资讯

下一篇

你也可能喜欢

安利 5 个拍案叫绝的 Matplotlib 骚操作!

长按储存图像,分享给朋友