使用matplotlib绘图

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

# 使用%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中。

plt.rcParams['font.sans-serif']=['SimHei']

# 用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False

# 用来显示正负号

X=np.linspace(0,2*np.pi,100)# 均匀的划分数据

Y=np.sin(X)

Y1=np.cos(X)

plt.title("Hello,matplotlib!!!")

plt.plot(X,Y)

plt.plot(X,Y1)


X=np.linspace(0,2*np.pi,100)

Y=np.sin(X)

Y1=np.cos(X)

plt.subplot(211)

plt.plot(X,Y,color='dodgerblue')

plt.subplot(212)

plt.plot(X,Y1,color = 'r')


# 柱状图

 柱状图一般用来统计一些类型的数量,例如不同产品的销售额。柱状图一般有两种,一个是传统的,一个是叠加的。

data=[10,35,60,40]

plt.bar(range(len(data)),data)

plt.title('柱状图')


data=[10,35,60,40]

plt.barh(range(len(data)),data)

plt.title('水平柱状图')


data = [[5,25,50,20],

        [4,23,30,18],

        [6,22,90,10]]

X = np.arange(4)

plt.bar(X+0.00,data[0],color='b',width=0.25,label="A")

plt.bar(X+0.25,data[1],color='g',width=0.25,label="B")

plt.bar(X+0.50,data[2],color='r',width=0.25,label="C")

# 显示上面设置的 lable

plt.legend()

plt.title('多个柱状图')


data = [[5,25,50,20],

        [4,23,30,18],

        [6,22,90,10]]

X = np.arange(4)

plt.bar(X, data[0], color = 'b', width = 0.25)

plt.bar(X, data[1], color = 'g', width = 0.25,bottom=data[0])

plt.bar(X, data[2], color = 'r', width = 0.25,bottom = np.array(data[0]) + np.array(data[1]))

plt.title('叠加型柱状图')

plt.show()


散点图

散点图用来衡量两个连续变量之间的相关性

N = 50

x = np.random.rand(N)

y = np.random.rand(N)

plt.scatter(x,y)

plt.title('普通散点图')



N = 50

x = np.random.rand(N)

y = np.random.rand(N)

colors = np.random.randn(N)

# 颜色可以用数值表示

area = np.pi * (15 * np.random.rand(N))**2

# 调整大小

plt.scatter(x,y,c=colors,alpha=0.5, s = area)


N = 30

x = np.random.rand(N)

y = np.random.rand(N)

colors = np.random.randint(0,2,size =30)

colors = np.random.randint(0,2,size = 30)

plt.scatter(x,y,c=colors,alpha=0.5,s = area)


直方图

直方图是用来衡量连续变量的概率分布的。在构建直方图之前,我们需要先定义好bin(值的范围),也就是说我们需要先把连续值划分成不同等份,然后计算每一份里面数据的数量

a = np.random.rand(60)

plt.hist(a,bins=20)

plt.ylim(0,15)


a = np.random.randn(1000)

plt.hist(a,bins=50)

plt.title("标准正态分布")


盒图

boxplot用于表达连续特征的百分位数分布。统计学上经常被用于检测单变量的异常值,或者用于检查离散特征和连续特征的关系

x = np.random.randint(20,100,size=(30,3))

plt.boxplot(x)

plt.ylim(0,120)

# 在x轴的什么位置填一个label,我们这里制定在1,2,3位置,写上ABC

plt.xticks([1,2,3],['A','B','C'])

plt.hlines(y = np.median(x,axis = 0)[0],xmin=0,xmax=3)



添加描述性文字

增加文字

plt.text(x, y, s, fontdict=None, withdash=False, **kwargs)

# 设置画布颜色为blue

fig, ax =plt.subplots(facecolor='blue')

# y轴数据

data =[[5,25,50,20],

      [4,23,51,17],

      [6,22,52,19]]

X = np.arange(4)

plt.bar(X+0.00, data[0], color='darkorange',width = 0.25,label='A')

plt.bar(X+0.25, data[1], color='steelblue',width = 0.25,label='B')

plt.bar(X+0.50, data[2], color='violet',width = 0.25,label='C')

ax.set_title('Figure 2')

plt.legend()

W = [0.00,0.25,0.50]

for i in range(3):

    for a,b in zip(X+W[i],data[i]):

        plt.text(a,b,"%.0f"%b,ha="center",va="bottom")


plt.xlabel("Group")

plt.ylabel("Num")

plt.text(0.0,48,"TEXT")



注释地另一种方法:annotate

在数据可视化的过程中,图片中的文字经常被用来注释图中的一些特征。使用annotate()方法可以很方便地添加此类注释。在使用annotate时,要考虑两个地方的坐标(text只需要一个):被注释的地方xy(x, y)和插入文本的地方xytext(x, y)

X = np.linspace(0,2*np.pi,100)# 均匀的划分数据

Y = np.sin(X)

Y1 = np.cos(X)

plt.plot(X,Y)

plt.plot(X,Y1)

plt.annotate('Points',

            xy=(1,np.sin(1)),

            xytext=(2,0.5), fontsize=16,

            arrowprops=dict(arrowstyle="->"))

plt.title("这是一副测试图!")


%pylab inline

pylab.rcParams['figure.figsize'] = (10, 6) # 调整图片大小

# np.random.seed(19680801)

n_bins = 10

x = np.random.randn(1000, 3)

fig, axes = plt.subplots(nrows=2, ncols=2)

ax0, ax1, ax2, ax3 = axes.flatten()

colors = ['red', 'tan', 'lime']

ax0.hist(x, n_bins, normed=1, histtype='bar', color=colors, label=colors)

ax0.legend(prop={'size': 10})

ax0.set_title('bars with legend')

ax1.hist(x, n_bins, normed=1, histtype='bar', stacked=True)

ax1.set_title('stacked bar')

ax2.hist(x, n_bins, histtype='step', stacked=True, fill=False)

ax2.set_title('stack step (unfilled)')

# Make a multiple-histogram of data-sets with different length.

x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]]

ax3.hist(x_multi, n_bins, histtype='bar')

ax3.set_title('different sample sizes')

%pylab inline


import pandas as pd

df = pd.DataFrame(np.random.rand(50, 2), columns=['a', 'b'])

# 散点图

df.plot.scatter(x='a', y='b')


df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])

# 绘制柱状图

df.plot.bar()


# 堆积的柱状图

df.plot.bar(stacked=True)


# 水平的柱状图

df.plot.barh(stacked=True)


df = pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.randn(1000),'c':np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])

# 直方图

df.plot.hist(bins=20)


# 盒图

df = pd.DataFrame(np.random.rand(10, 5), columns=['A', 'B', 'C', 'D', 'E'])

df.plot.box()


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335