博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Data manipulation in python (module 5)
阅读量:6768 次
发布时间:2019-06-26

本文共 5562 字,大约阅读时间需要 18 分钟。

 

    1. Subplots

%matplotlib notebookimport matplotlib.pyplot as pltimport numpy as npplt.figure()# subplot with 1 row, 2 columns, and current axis is 1st subplot axesplt.subplot(1, 2, 1)linear_data = np.array([1,2,3,4,5,6,7,8])# plot exponential data on 1st subplot axesplt.plot(linear_data, '-o')exponential_data = linear_data **2 # subplot with 1 row, 2 columns, and current axis is 2nd subplot axesplt.subplot(1, 2, 2)plt.plot(exponential_data)plt.subplot(1, 2, 1)plt.plot(exponential_data)# Create a new figureplt.figure()ax1 = plt.subplot(1, 2, 1)plt.plot(linear_data, '-o')# pass sharey=ax1 to ensure the two subplots share the same y axisax2 = plt.subplot(1, 2, 2, sharey=ax1)plt.plot(exponential_data, '-x')

Output:

# create a 3x3 grid of subplotsfig, ((ax1,ax2,ax3), (ax4,ax5,ax6), (ax7,ax8,ax9)) = plt.subplots(3, 3, sharex=True, sharey=True)# plot the linear_data on the 5th subplot axes ax5.plot(linear_data, '-')# set inside tick labels to visiblefor ax in plt.gcf().get_axes():    for label in ax.get_xticklabels() + ax.get_yticklabels():        label.set_visible(True)        # necessary on some systems to update the plotplt.gcf().canvas.draw()

 2 .Histogram

import numpy as npimport matplotlib.pyplot as plt# create 2x2 grid of axis subplotsfig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex=True)axes = [ax1,ax2,ax3,ax4]# draw n = 10, 100, 1000, and 10000 samples from the normal distribution and plot corresponding histogramsfor i, ax in enumerate(axes):    sample = np.random.normal(0, 1, 10**(i+1))    ax.hist(sample, bins=100)    ax.set_title('n={}'.format(10**(i+1)))

Output:

import matplotlib.gridspec as gridspecplt.figure()gspec = gridspec.GridSpec(3,3)top_histogram = plt.subplot(gspec[0, 1:])side_histogram = plt.subplot(gspec[1:, 0])lower_right = plt.subplot(gspec[1:, 1:])Y = np.random.normal(loc=0.0, scale=1.0, size=10000)X = np.random.random(size=10000)lower_right.scatter(X, Y)top_histogram.hist(X, bins=100)s = side_histogram.hist(Y, bins=100, orientation='horizontal')# # clear the histograms and plot normed histogramstop_histogram.clear()top_histogram.hist(X, bins=100, normed=True)side_histogram.clear()side_histogram.hist(Y, bins=100, orientation='horizontal', normed=True)# flip the side histogram's x axisside_histogram.invert_xaxis()# change axes limitsfor ax in [top_histogram, lower_right]:    ax.set_xlim(0, 1)for ax in [side_histogram, lower_right]:    ax.set_ylim(-5, 5)

Output:

 

3. Box plots

import matplotlib.pyplot as pltimport mpl_toolkits.axes_grid1.inset_locator as mpl_ilimport pandas as pdnormal_sample =  np.random.normal(loc=0.0, scale=1.0, size=10000)random_sample = np.random.random(size=10000)gamma_sample = np.random.gamma(2, size=10000)df = pd.DataFrame({
"normal":normal_sample, "random": random_sample, "gamma":gamma_sample})plt.figure()# if `whis` argument isn't passed, boxplot defaults to showing 1.5*interquartile (IQR) whiskers with outliers_ = plt.boxplot([ df['normal'], df['random'], df['gamma'] ], whis='range')# overlay axis on top of another ax2 = mpl_il.inset_axes(plt.gca(), width='60%', height='40%', loc=2)ax2.hist(df['gamma'], bins=100)# switch the y axis ticks for ax2 to the right sideax2.yaxis.tick_right()

Output:

4. Heartmap

import matplotlib.pyplot as pltimport numpy as npplt.figure()Y = np.random.normal(loc=0.0, scale=1.0, size=10000)X = np.random.random(size=10000)plt.figure()_ = plt.hist2d(X, Y, bins=100)# add a colorbar legendplt.colorbar()

Output:

 

 5.  Animation

import matplotlib.animation as animationimport matplotlib.pyplot as pltimport numpy as npplt.figure()n = 100x = np.random.randn(n)plt.hist(x, bins=10)# create the function that will do the plotting, where curr is the current framedef update(curr):    # check if animation is at the last frame, and if so, stop the animation a    if curr == n:         a.event_source.stop()        # Clear the current axis    plt.cla()    bins = np.arange(-4, 4, 0.5)    plt.hist(x[:curr], bins=bins)    plt.axis([-4,4,0,30])    plt.gca().set_title('Sampling the Normal Distribution')    plt.gca().set_ylabel('Frequency')    plt.gca().set_xlabel('Value')    plt.annotate('n = {}'.format(curr), [3,27])fig = plt.figure()a = animation.FuncAnimation(fig, update, interval=100)

Output:

 

6. Interactivity

Mousing clickigng

import matplotlib.pyplot as pltimport numpy as npplt.figure()data = np.random.rand(10)plt.plot(data)def onclick(event):    plt.cla()    plt.plot(data)    plt.gca().set_title('Event at pixels {},{} \nand data {},{}'.format(event.x, event.y, event.xdata, event.ydata))# tell mpl_connect we want to pass a 'button_press_event' into onclick when the event is detectedplt.gcf().canvas.mpl_connect('button_press_event', onclick)

Output:

from random import shuffleorigins = ['China', 'Brazil', 'India', 'USA', 'Canada', 'UK', 'Germany', 'Iraq', 'Chile', 'Mexico']shuffle(origins)df = pd.DataFrame({
'height': np.random.rand(10), 'weight': np.random.rand(10), 'origin': origins})plt.figure()# picker=5 means the mouse doesn't have to click directly on an event, but can be up to 5 pixels awayplt.scatter(df['height'], df['weight'], picker=10)plt.gca().set_ylabel('Weight')plt.gca().set_xlabel('Height')def onpick(event): origin = df.iloc[event.ind[0]]['origin'] plt.gca().set_title('Selected item came from {}'.format(origin))# tell mpl_connect we want to pass a 'pick_event' into onpick when the event is detectedplt.gcf().canvas.mpl_connect('pick_event', onpick)

Output:

 

转载于:https://www.cnblogs.com/climberclimb/p/6985255.html

你可能感兴趣的文章
JS自带字符串函数
查看>>
《C#线程参考手册》读书笔记(二):.NET中的线程
查看>>
Windows Security Login
查看>>
远程服务和本地服务
查看>>
SpringAOP小结
查看>>
单体内置对象的理解
查看>>
数据结构7_链二叉树
查看>>
使用Newtonsoft将DataTable转Json
查看>>
缓存类
查看>>
Spark RDD Transformation 简单用例(三)
查看>>
分治法理论
查看>>
澄甫先生谓古人练拳分四步功夫
查看>>
第八天
查看>>
C# Lambda表达式
查看>>
Android Studio中多项目共享Library
查看>>
用java的io流,将一个文本框的内容反转
查看>>
python: 不同级别的日志输出到不同文件的日志类
查看>>
[LeetCode] Trapping Rain Water
查看>>
linux下下载redis,并且编译
查看>>
FirstOrDefault()的重载方法
查看>>