设置plot的风格和样式(二)

import matplotlib.pyplot as plt
import numpy as np


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


'''点和线的样式。'''

'''颜色:参数color或c  颜色值的方式:(1)别名color="r";(2)合法的HTML颜色名color="red";(3)HTML十六进制字符串color="#eeefff";(4)归一化到[0,1]的RGB元组color=(0.3, 0.3, 0.4)'''

x = np.arange(0, 10, 0.1)
# plt.plot(x, np.sin(x), color="red")   # 合法的HTML颜色名color="red"
# plt.plot(x, np.sin(x), "#ff0000")    # 只能使用六位数进行表示,红绿蓝
plt.plot(x, np.sin(x), color=(0.5, 0.8, 0.4))    # 红绿蓝 归一化到[0,1]的RGB元组
plt.show()

pic_data = plt.imread("pic.jpg")  # jpg和png的区别:格式不同,导致存数据的时候,png格式的图片是归一化的红绿蓝数据


# 透明度  alpha参数
x = np.arange(0, 10, 0.1)
plt.plot(x, np.sin(x), color="red", alpha=0.5)
plt.show()


# 背景色  设置背景色,通过plt.subplot()方法传入facecolor参数,来设置坐标轴的背景色
x = np.arange(0, 10, 0.1)
axes = plt.subplot(facecolor="gray", alpha=0.5)    # 面向对象的画图方法  axes画板
axes.plot(x, np.sin(x), "w")
plt.show()


'''线性 参数linestyle或ls  
线条风格和描述:'-'=实线, '...'=破折线, '-.'=点化线, ':'=虚线, 'steps'=阶梯线, 'None'/','=什么都不画'''
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls=":")   # ls设置线条风格
plt.show()


# 线宽  linewidth或lw参数
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls=":", lw=2.5)
plt.show()


# 不同宽度的破折线  dashes参数 设置破折号序列各段的宽度
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls=":", lw=2.5, dashes=[2, 5, 5, 2])  # 2代表长度, 5代表间隔
plt.show()


'''点型  marker参数 标记和描述:'1'=一角朝下的三脚架, '2'=一角朝上的三脚架, '3'一角朝左的三脚架, '4'=一角朝右的三脚架, 's'=正方形, 'h'=六边形1, '8'=八边形, 'p'=五边形, 'H'=六边形2, '.'=点, '*'=星号, 'x'=X, '+'=加号, ','=像素, 'o'=圆圈, 'd'=小菱形, 'D'=菱形, '_'=水平线, '|'=水平线, '>'=一角朝右的三角形, '<'=一角朝左的三角形, 'v'=一角朝下的三角形, '^'=一角朝上的三角形'''
plt.figure(figsize=(12, 9))
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls="--", lw=2.5, marker='2', markersize=10)
plt.show()


# 多参数连用  颜色、点型、线型
plt.figure(figsize=(12, 9))
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), "r--o")
plt.show()



# 更多点和线的设置  markeredgewidth=点边缘的宽度
# markeredgecolor=点边缘的颜色, markerfacecolor=点内部的颜色, markersize=点的大小
x = np.arange(0, 10, 1)
plt.plot(x, "r--", marker="o", markersize=10, markeredgecolor="green",
         markeredgewidth=2, markerfacecolor="purple")
plt.show()


# 在一条语句中为多个曲线进行设置
# 多个曲线同一设置,属性名声明 plt.plot(x1,y1,x2,y2,fmt,...)
x = np.arange(0, 10, 0.01)
# 设置属性时如果不声明属性的名称,则这个属性会直接被设置给距离它最近的那条线
plt.plot(x, 2*x, x, np.sin(x)*5, ls="--", lw=3, color="red")
plt.show()


# 多个曲线不同设置
# 多个都进行设置时,无需声明属性plt.plot(x1,y1,fmt1,x2,y2,fmt2,...)
x = np.arange(0, 10, 1)
plt.plot(x, 2*x, "r--", x, np.cos(x)*5, "g-.", marker="o")
plt.show()


# 三种设置
# 2)对实例使用一系列的setter方法
x = np.arange(0, 10, 0.1)
l1, = plt.plot(x, np.sin(x))
l2, = plt.plot(x, np.cos(x))
l3, = plt.plot(x, 2*x)
l1.set_color("r")
l2.set_color("blue")
l3.set_linewidth(5)
l3.set_linestyle('--')
plt.show()


# 3)使用setp方法
line, = plt.plot(x, np.sin(x))
plt.setp(line, linestyle='--', linewidth=1.5, marker="o")    # setp():p:property(属性)
plt.show()


'''X、Y轴坐标刻度'''
# xticks()和ysticks()方法
x = np.random.randn(100)   # 总共有100个数据
plt.plot(x.cumsum())
plt.xticks(np.linspace(0, 100, 5), list("ABCDE"), fontsize=12, rotation=0)      # 5表示分成5份
plt.yticks(np.linspace(-10, 20, 3), ["min", 0, "max"], fontsize=12)             # 3表示分成3份
plt.show()


# 面向对象的方法 set_xticks、set_yticks、set_xticklabels、set_yticklabels方法
axes = plt.subplot(111)
axes.plot(x.cumsum())
axes.set_xticks([0, 25, 50, 75, 100])   # set_xticks设置刻度值
axes.set_xticklabels(list("abcde"))     # set_xticklabels设置标签
axes.set_yticks([-10, -6, -2, 2, 6])
plt.show()


# 正弦余弦  LaTex语法,用π等表达式在图表上写上希腊字母
x = np.arange(-np.pi, np.pi, 0.01)
plt.plot(x, np.sin(x), x, np.cos(x))
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
           ["-$\pi$", "-$\pi/2$", 0, "$\pi/2$", "$\pi$"])
plt.yticks([-1, 0, 1], ["min", 0, "max"])
plt.show()

猜你喜欢

转载自blog.csdn.net/xiao_pingping/article/details/82082347