《Python数据可视化编程实践-绘制图表》由会员分享,可在线阅读,更多相关《Python数据可视化编程实践-绘制图表(17页珍藏版)》请在金锄头文库上搜索。
1、Python数据可视化编程实践-绘制图表准备工作打开Jupyter Notebook,导入需要的包,并配置好图片交互和中文显示环境:import pan das as pdimport nu mpy as npimport sysreload(sys)sys.setdefaulte ncodi ng(utf-8)import matplotlib as mplimport matplotlib.pyplot as pltimport matplotlib.cm as cm%matplotlib inlineplt.rcParamsfo nt.sa ns-serif=SimHei # 用来正常显
2、示中文标签 plt.rcParamsaxes. un icode_mi nu s二False 用来正常显示负号定义图表类型一一柱状图、线形图和堆积柱状图调用figure()方法,创建一个新的图表,接下来的绘图操作都在此图表中进行,参数figsize=(12,6)表示该图表的大小。调用subplot(231)方法把图表分割成2行3列的网格,1表示图形的标号x = 1,2, 3, 4y =5, 4, 3, 2plt.figure(figsize=(12,6)plt.subplot(231)plt.plot(x,y) # 折线图plt.subplot(232)plt.bar(x,y) #垂直柱状图p
3、lt.subplot(233)plt.barh(x,y) #水平柱状图plt.subplot(234)plt.bar(x,y)y1= 7,8,5,3plt.bar(x,y1,bottom=y,color=r) # 堆叠柱状图设置参数 bottom=y plt.subplot(235)plt.boxplot(x) # 箱线图plt.subplot(236)plt.scatter(x,y) # 散点图plt.show()具体解释下箱线图中的几个最重要的显示选项首先,我们可以添加从箱体延伸出来的箱须来展示数据集合的整个范围。 箱 体和箱须主要用于表现一个或多个数据集合中数据的编号,容易对数据进行对比
4、 而且易于理解。在同一个箱线图中可以呈现 5种数据。最小值:数据集合的最小值。第二四分位数:其以下为数据集合中较低的 25%数据。中值:数据集合的中值第三四分位数:其以上为数据集合中较高的25%数据最大值:给定数据集合的最大值。dataset = 113, 115, 119, 121, 124,124, 125, 126, 126, 126,127, 127, 128, 129, 130,130, 131, 132, 133, 136plt.figure(figsize=(10,6)plt.subplot(121)plt.boxplot(dataset, vert = False)plt.su
5、bplot(122)plt.hist(dataset)plt.show()我们用同一个数据集合来绘制箱线图和直方图,观察两种图表在数据展现上的差异。左图呈现了五个统计数据,右图展示了数据集合在给定范围内的分组情 况。简单的正弦图和余弦图我们对从-Pi到Pi之间具有相同线性距离的256个点来计算正弦值和余弦 值,然后把sin(x)值和cos(x)值在用以图表中绘制出来。x = np.lin space( -n p.pi, n p.pi, 256, en dpo in t=True)y = n p.cos(x)y1 = n p.s in(x)plt.figure(figsize=(10,6)plt
6、.plot(x, y)plt.plot(x, y1)plt.title(Functions $sin$ and $cos$) #设置图标题plt.xlim(-3.0, 3.0) # 设置 x 轴范围plt.ylim(-1.0, 1.0) #设置 y 轴范围plt.xticks( -n p.pi, - np.pi/2, 0, n p.pi/2, n p.pi,r$-pi$, r$-pi/2$, r$0$, r$+pi/2$, r$+pi$) # 用希腊字母标注 x 轴标签 plt.yticks(-1,0, +1,r $-1$, r$0$, r$+1$)plt.show()设置坐标轴长度和范围如果
7、不实用axis()或者其他参数设置,matplotlib 会自动使用最小值,冈収子 可以让我们在一个图中看到所有的数据点。调用autoscale()方法,会以坐标轴的最佳大小适应数据的显示。axis()里面的值分别表示坐标轴上 xmin、xmax、ymin、ymaxaxhline()表示绘制了一条y=0的水平线 axvline()表示绘制了一条x=0的垂直线 axhline表示绘制了一条y=4的水平线l=-1, 1, -10, 10plt.axis(l)plt.axhli ne()plt.axvli ne()plt.axhl in e(4)设置图表的线型、属性和格式化字符串常见的线条样式:-直
8、线-虚线-.-.形式:细小虚线常见的点样式:s-方形h-六角形H-六角形*-星号+-加好X-X 型d-菱形D-菱形P-五角形常见的颜色样式:c-cyan-青色 r-red-红色 m-mage nte-品红g-green-绿色 b-blue-蓝色 y-yellow-黄色 k-black-黑色w-white-白色 # plot(x轴数据,y轴数据,展现形式)x = 1,2, 3, 4, 8y = 5, 7, 2, 1,5plt.plot(x, y, -, color=g, li newidth=0.8) plt.plot(x, y,*,color=r) # 散点图 plt.show()设置刻度、刻
9、度标签和网格刻度是图形的一部分,由刻度定位器(指定刻度所在的位置)和刻度格式器(指定刻度显示的样式)组成。刻度有主刻度和次刻度,默认次刻度不显示。locator_params()方法控制刻度定位器,可以控制刻度的数目plt.figure(figsize=(10,6)#获取当前坐标ax = plt.gca()#设置紧凑视图,设置刻度间隔最大为10ax.lo cator_params(tight=True, nbins = 10)#生成100个正态分布值ax.plot( np.ra ndom. normal(10, .1, 100)plt.show()使用dates模块的一个例子来说明刻度格式器的
10、配置。刻度格式器规定了值的显import datetimefig = plt.figure(figsize=(10,6)#获取当前的坐标轴ax = plt.gca()#设置一些日期区间start = datetime.datetime(2013, 01, 01)stop = datetime.datetime(2013, 12, 31)delta = datetime.timedelta(days = 1)#转换日期dates = mpl.dates.dra nge(start, stop, delta)#产生一些随机值values = n p.ra ndom.ra nd(le n( date
11、s)ax = plt.gca()#用日期值画图ax.plot_date(dates, values, li nestyle=-, marker=”)#指定格式date_format = mpl.dates.DateFormatter(%Y-%m-%d)#应用格式ax.xaxis.set_major_formatter(date_format)#自动格式日期标签fig.autofmt_xdate()plt.show()添加图例和注解图例和注解清洗连贯地解释了数据图表的内容。通过给给个plot添加一个关于所显示数据的简短描述,能让观察者更容易理解。在每个plot中指定了一个字符串标签(label)
12、,这样legend()会把它们添加到图 例框中。通过loc参数确定图例框的位置。annotate()可以为xy坐标位置的数据点添加字符串描述。通过设置 xycoord=data,可以指定注解和数据使用相同的坐标系,注解文本的起始位 置通过xytext指定。箭头由xytext指向xy坐标位置。arrowstyle指定了箭头风格。plt.figure(figsize=(10, 6)#生成不同正态分布值x1 = n p.ra ndom. normal(30, 3, 100)x2 = np.random.normal(20, 2, 100)x3 = np.ra ndom. no rmal(10, 3,
13、 100)#在同张画布里画3条线plt.plot(x1, label=plot)plt.plot(x2, label=2nd plot)plt.plot(x3, label=3 nd plot)#生成图例框plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=3, mode=expand, borderaxespad=0.)#注解重要值plt.a nno tate(Importa nt value:(55, 20), (55, 20), xycoords=data, xytext=(5, 38), arrowprops=dict
14、(arrowstyle=-)plt.show()移动轴线到图中央轴线定义了数据区域的边界,把坐标轴刻度标记连接起来。一共有四个轴线, 可以把它们放置在任何位置。默认情况下,它们被放置在坐标轴的边界。为了把轴线移到图中央,需要把其中两个轴线隐藏起来(设置 color为 none )。然后,移动另外两个到坐标(0 , 0)。坐标为数据空间坐标。x = np.lin space( -n p.pi, n p.pi, 500, en dpo in t=True)y = n p.s in(x)plt.plot(x, y)ax = plt.gca()ax.sp in esright.set_color( non e) # 隐藏右边的轴线ax.sp in estop.set_color( none) # 隐藏顶端的轴线ax.spinesbottom.set_position(data, 0) # 移动底端的轴线到(0, 0) ax.spinesleft.set_position(data, 0) # 移动左端的轴线到(0,0) ax.xaxis.set_ticks_position(bottom) # 移动底端的刻度到 x 轴 ax.yaxis.set_ticks_position(left) # 移动左侧的刻度到 x 轴 plt