matplotlib线型与坐标轴与四图(六)-阿里云开发者社区

开发者社区> 蓝色の流星VIP> 正文

matplotlib线型与坐标轴与四图(六)

简介: plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为: plt.plot(X, Y, ‘format’, …) 1 点和线的样式 颜色 参数color或c 五种定义...
+关注继续查看

plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, ‘format’, …)

1 点和线的样式

颜色

参数color或c
五种定义颜色值的方式
别名
color='r'

合法的HTML颜色名
color = 'red'
HTML十六进制字符串
color = '#eeefff'
归一化到[0, 1]的RGB元组
color = (0.3, 0.3, 0.4)
灰度
color = (0.1)

透明度

# 透明度
y = np.arange(1, 3)
plt.plot(y, c="red", alpha=0.1);    # 设置透明度
plt.plot(y+1, c="red", alpha=0.5);
plt.plot(y+2, c="red", alpha=0.9);

背景色

设置背景色,通过plt.subplot()方法传入facecolor参数,来设置坐标轴的背景色

plt.subplot(facecolor='cyan');
plt.plot(np.random.randn(10),np.arange(1,11))

线型

  • 线型
线条风格 描述 线条风格 描述
’ - ‘ 实线 ’ : ‘ 虚线
’ – ‘ 破折线 ‘steps’ 阶梯线
’ -. ‘ 点划线 没有
  • 点型

    y = np.arange(1, 3, 0.2)
    plt.plot(y, '1', y+0.5, '2', y+1, '3', y+1.5,'4');
    plt.plot(y+2, '3')  #不声明marker,默认ls = None
    plt.plot(y+2.5,marker = '3') #声明了marker,ls 默认是实线
    plt.show()
  • 多参数连用

    
    #颜色、点型、线型
    
    
    x = np.linspace(0, 5, 10)
    plt.plot(x,3*x,'r-.')
    plt.plot(x, x**2, 'b^:') # blue line with dots
    plt.plot(x, x**3, 'go-.') # green dashed line
    plt.show()
  • 点线的设置

参数 描述 参数 描述
color或c 线的颜色 linestyle或ls 线型
linewidth或lw 线宽 marker 点型
markeredgecolor 点边缘的颜色 markeredgewidth 点边缘宽度
makerfacecolor 点内部的颜色 markersize 点大小

三种设置方式

对实例使用一系列的setter方法

x = np.arange(0,10)
y = np.random.randint(10,30,size = 10)
line,= plt.plot(x, y)
line2 = plt.plot(x,y*2,x,y*3)
line.set_linewidth(5)
line2[1].set_marker('o')
print(line,line2)

使用setp()方法

line = plt.plot(x, y)
plt.setp(line, 'linewidth', 1.5,'color','r','marker','o','linestyle','--')

2 坐标轴刻度

  • xticks()和yticks()方法
x = [5, 3, 7, 2, 4, 1]
plt.plot(x);
plt.xticks(range(len(x)), ['a', 'b', 'c', 'd', 'e', 'f']); # 传入位置和标签参数,以修改坐标轴刻度
plt.yticks(range(1, 8, 2));
plt.show()
  • 面向对象方法
set_xticks、set_yticks、set_xticklabels、set_yticklabels方法

fig = plt.figure(figsize=(10, 4))
ax = fig.add_subplot(111)

x = np.linspace(0, 5, 100)

ax.plot(x, x**2, x, x**3, lw=2)

ax.set_xticks([1, 2, 3, 4, 5])
ax.set_xticklabels(['a','b','c','d','e'], fontsize=18)

yticks = [0, 50, 100, 150]
ax.set_yticks(yticks)
ax.set_yticklabels([y for y in yticks], fontsize=18); # use LaTeX formatted labels
  • 正弦余弦:LaTex语法,用ππ等表达式在图表上写上希腊字母
x = np.arange(-np.pi,np.pi,0.01)
plt.figure(figsize=(12,9))
plt.plot(x,np.sin(x),x,np.cos(x))

plt.axis([x.min()-1,x.max()+1,-1.2,1.2])

#xticks:参数一刻度,参数二,对应刻度上的值
plt.xticks(np.arange(-np.pi,np.pi+1,np.pi/2),
           ['$-\delta$','$-\pi$/2','0','$\pi$/2','$\pi$'],size = 20)

plt.yticks([-1,0,1],['min','0','max'],size = 20)

plt.show() 

3 直方图 条形图 饼图 散点图

  • 直方图 【直方图的参数只有一个x!!!不像条形图需要传入x,y】

    hist()的参数
    bins
    可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10
    normed
    如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为False
    color
    指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
    orientation
    通过设置orientationhorizontal 横向创建水平直方图。默认值为vertical 纵向

    x = np.random.randint(5,size = 5)
    display(x)
    plt.hist(x,histtype = 'bar'); 
  • 正态分布

    u = 100 #数学期望
    s = 15 #方差
    x = np.random.normal(u,s,1000) # 生成正太分布数据
    
    ax = plt.gca() #获取当前图表
    ax.set_xlabel('Value')
    ax.set_ylabel('Frequency') #设置x,y轴标题
    ax.set_title("Histogram normal u = 100 s = 15") #设置图表标题
    
    ax.hist(x,bins = 100,color = 'r',orientation='horizontal')
    plt.show()
  • 条形图

    bar() 方法 : 第一个参数为条形左下角的x轴坐标,第二个参数为条形的高度;
    matplotlib会自动设置条形的宽度,本例中条形宽0.8

    plt.bar([1, 2, 3], [3, 2, 5]); 
    plt.show()
    
    # 例子:绘制并列条形图
    
    data1 = 10*np.random.rand(5)
    data2 = 10*np.random.rand(5)
    data3 = 10*np.random.rand(5)
    
    locs = np.arange(1, len(data1)+1)
    width = 0.27
    
    plt.bar(locs, data1, width=width);
    plt.bar(locs+width, data2, width=width, color='red');
    plt.bar(locs+2*width, data3, width=width, color='green') ;
    plt.xticks(locs + width*1, locs);
    plt.show()

    barh方法

    plt.barh([1, 2, 3], [3, 2, 5],height = 0.27,color = 'cyan');
    plt.show()
  • 饼状图

    饼图:【饼图也只有一个参数x!】
    pie()
    饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小

    常规的饼图绘制

    plt.figure(figsize = (4,4)) # 饼图绘制正方形
    x = [45,35,20] #百分比
    labels = ['Cats','Dogs','Fishes'] #每个区域名称
    plt.pie(x,labels = labels)
    plt.show()

    部分饼图的绘制

    plt.figure(figsize=(4, 4));
    x = [0.1, 0.2, 0.3] # 当各部分之和小于1时,则不计算各部分占总体的比例,饼的大小是数值和1之比
    labels = ['Cats', 'Dogs', 'Fishes']
    plt.pie(x, labels=labels); # labels参数可以设置各区域标签
    plt.show()

    切分的饼图

    
    # labels参数设置每一块的标签;labeldistance参数设置标签距离圆心的距离(比例值)
    
    
    # autopct参数设置比例值的显示格式(%1.1f%%);pctdistance参数设置比例值文字距离圆心的距离
    
    
    # explode参数设置每一块顶点距圆形的长度(比例值);colors参数设置每一块的颜色;
    
    
    # shadow参数为布尔值,设置是否绘制阴影
    
    
    plt.figure(figsize=(4, 4));
    x = [4, 9, 21, 55, 30, 18]
    labels = ['Swiss', 'Austria', 'Spain', 'Italy', 'France', 'Benelux']
    explode = [0.2, 0.1, 0, 0, 0.1, 0]
    colors = ['r', 'k', 'b', 'm', 'c', 'g']
    plt.pie(x, 
          labels=labels, 
          labeldistance=1.2,
          explode=explode, 
          colors=colors, 
          autopct='%1.1f%%', 
          pctdistance=0.5, 
          shadow=True);
    plt.show()
  • 散点图

    散点图 : 【散点图需要两个参数x,y,但此时x不是表示x轴的刻度,而是每个点的横坐标!】
    scatter()

    
    # s参数设置散点的大小;c参数设置散点的颜色;marker参数设置散点的形状
    
    x = np.random.randn(1000)
    y = np.random.randn(1000)
    size = 50*abs(np.random.randn(1000))
    colors = np.random.randint(16777215,size = 1000)
    
    li = []
    for color in colors:
      a = hex(color)
      str1 = a[2:]
      l = len(str1)
      for i in range(1,7-l):
          str1 = '0'+str1
      str1 = "#" + str1
      li.append(str1)
    
    plt.scatter(x, y,s = size, c=li, marker='d');
    plt.show()

    复杂的饼图的绘制

    import numpy as np
    import pandas as pd
    from pandas import Series,DataFrame
    import matplotlib.pyplot as plt
    
    x = np.random.randn(1000)
    y1 = np.random.randn(1000)
    y2 = 1.2 + np.exp(x) #exp(x) 返回的是e的x次方
    
    ax1 = plt.subplot(121)
    plt.scatter(x,y1,color = 'purple',alpha = 0.3,edgecolors = 'white',label = 'no correl')
    plt.xlabel('no correlation')
    plt.grid(True)
    plt.legend()
    
    ax2 = plt.subplot(122)
    plt.scatter(x,y2,color = 'green',alpha = 0.3,edgecolors = 'gray',label = 'correl')
    plt.xlabel('correlation')
    plt.grid(True)
    plt.legend()
    
    plt.show()

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10071 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26787 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11606 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9157 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13880 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7362 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4500 0
66
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载