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

但是!今天我们不走寻常路,专挑几个贼骚的操作分享下
1. Span SelectorSpan Selector是Matplotlib中的鼠标小部件,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], [105010023,15,28,45])
span = SpanSelector(ax, onselect, 'horizontal', useblit=True, rectprops=dict(alpha=0.5, facecolor='red'))       
plt.show()

下面是具体操作。
2. Broken BarhBroken的水平条形图是不连续具有间隙的图,它可用于数据值相差很大的情况下,例如,包含极端温度范围的数据集。在这种情况下,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 DemoMatplotlib的表格功能也是可以在图中显示表格的。当我们希望以条形图的形式快速查看表格中的值时,这特别方便。表格可以放置在图表的顶部,底部或侧面。

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
x = np.random.rand(58)*.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, 6040,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()

文章参考:

https://towardsdatascience.com/advanced-plots-in-matplotlib-part-1-30dbb02b09ae


©著作权归作者所有:来自51CTO博客作者mb5fe18e9fef50b的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 超赞,20个炫酷的数据可视化大屏(含源码)
  2. NBA投篮数据可视化,4行代码就能实现!
  3. 做动态图表,没有数据?用Python就能获取!
  4. 安利一个Python大数据分析神器!
  5. 墙裂推荐!小白入门数据科学的几个宝藏学习网站
  6. 太香了!推荐6个Python数据分析神器!!
  7. 大赞!分享一个数据科学利器 PyCaret,几行代码搞定从数据处理到模型
  8. Pandas,数据处理的好帮手!
  9. 数据探索很麻烦?推荐一款史上最强大的特征分析可视化工具:yellowbr

随机推荐

  1. Android 当中的 MVP 模式(二)封装
  2. Android的建议
  3. Android SVG矢量图
  4. Android USB 开发详解
  5. Android API版本对应Android系统版本及内
  6. Android C/C++开发指南
  7. Android入门教程 (一) Android简介和androi
  8. 4.0.x Launcher UI
  9. [原]如何在Android用FFmpeg+SDL2.0解码图
  10. android:ellipsize属性 textview