python画图时linestyle,color和loc参数的设置
本人没有看过专门介绍matplotlib的书籍,所以一直以来对一些画图的风格不是很清楚,今天总结一下linestyle,color和loc,供那些像我一样没看过这方面介绍的人使用。
linestyle和color是matplotlib做表时常用的两个参数,只要是需要线条的,不论是主图,还是添加的网格线,基本上是都会遇到的。loc则是用来确定位置的,一般添加图例的时候回用到。
颜色字符(color)
字符 | 代表颜色 |
---|---|
r | 红色 |
b | 蓝色 |
g | 绿色 |
w | 白色 |
c | 青色 |
m | 洋红 |
y | 黄色 |
k | 黑色 |
风格字符(linestyle)
字符 | 代表风格 |
---|---|
- (一个连字符) | 实线 |
– (两个连字符) | 虚线 |
-. | 点划线 |
: | 点虚线 |
’ ’ | 留空,空格 |
loc 参数(以matplotlib添加图例为例说明位置)
loc string | loc code | 位置 |
---|---|---|
"best" | 0 | 右上角(默认) |
“upper right” | 1 | 右上角 |
“upper left” | 2 | 左上角 |
“lower left” | 3 | 左下角 |
“lower right” | 4 | 右下角 |
"right" | 5 | 中右侧 |
“center left” | 6 | 中左侧 |
“center right” | 7 | 中右侧 |
“low center” | 8 | 中下方 |
“upper center” | 9 | 中上方 |
“center” | 10 | 中间 |
python画图基础
python用于画图常用matplotlib和seaborn**
1.matplotlib
使用前需要导入api
import matplotlib.pyplot as plt
1.1绘制基本图像
1.1.1折线图
1.准备数据
import random x = range(60) y = [random.uniform(15,18) for i in x] #random.uniform 中参数即为取值范围。
2.创建画布
plt.figure(figsize=(20,5),dpi=100) #其中参数figsize即为图像大小,dpi为分辨率。
3.绘制图像
plt.plot(x,y)
4.图像显示
plt.show()
1.1.2 散点图
重复1,2,4步
第3步改为plt.scatter(x,y)
图像显示:
1.1.3柱状图
重复1,2,4步
第3步改为plt.bar(x,y)
图像显示:
1.1.4 直方图
重复1,2,4步
第三步改为plt.hist(y)
只传入一个y参数,表示y的分布情况
图像显示:
也可以传入x参数,表示x的分布情况(但因x为0~59,所以没有意义)
图像显示:
1.2实现一些其他功能
我们用自己创建的数据作为上海市早上10时~11时的温度变化
#1.数据准备 x_shanghai = x y_shanghai = y #2.创建画布 plt.figure(figsize=(20,5),dpi=100) #3.绘制图像 plt.plot(x_shanghai,y_shanghai) #3.1添加x、y的刻度 x_ticks = ["10:{}分"format(i) for i in x_shanghai] y_ticks = range(40) #3.2修改x、y的刻度 plt.xticks(x_shanghai[::5],x_ticks[::5]) #plt.xticks第一个参数是刻度,第二个参数是刻度标签(plt.yticks也一样) plt.yticks(y_ticks[::5]) #五分钟取一个刻度 #3.3添加网格显示 plt.grid(True,linestyle = "--",alpha = 0.6) 参数linestyle为网格线的种类,alpha为网格线深浅
图像显示:
1.3 在一个坐标系中画出多个图像
#0 准备数据 x = range(60) y_shanghai = [random.uniform(15,18) for i in x] y_beijing = [random.uniform(1,3) for i in x] #1 创建画布 plt.figure(figsize=(20,5),dpi=100) #2 绘制图像 plt.plot(x,y_shanghai,label = "上海") #画一条标签为上海的图像 plt.plot(x,y_beijing,color = 'r',linestyle="--",label="北京") #画一条标签为北京的图像 plt.legend(loc ="best") #plt.legend()函数设置图例位置 #2.1 添加x,y刻度 x_shanghai_ticks = ["10点{}分".format(i) for i in x] y_shanghai_ticks = range(40) #2.2 修改x,y刻度 plt.xticks(x[::5],x_shanghai_ticks[::5]) plt.yticks(y_shanghai_ticks[::5]) #2.3 添加网格显示 plt.grid(True , linestyle = "--",alpha = 0.6) #2.4 添加标签数据 plt.xlabel("时间",fontsize=20) plt.ylabel("温度",fontsize=20) plt.title("某市某日10时至11时的温度变化折线图",fontsize=20) #fontsize为字体大小 # 图像保存 plt.savefig("test.png") #3 图像显示 plt.show()
图像显示:
1.4多坐标作图
#0 准备数据 x = range(60) y_shanghai = [random.uniform(15,18) for i in x] y_beijing = [random.uniform(1,3) for i in x] #1 创建画布 plt.figure(figsize=(20,8),dpi=100) # fig,axes=plt.subplot(nrows=1,ncols=2,figsize=(20,8),dpi=100) #2 绘制图像 # axes[0].plot(x,y_shanghai,label = "上海") # axes[1].plot(x,y_beijing,color = 'r',linestyle="--",label="北京") f1=plt.subplot(1,2,1)#将figure分成一行两列,第三个数字代表的是第一个位置的图 f1.scatter(x,y_shanghai,label="上海",color='r',linestyle='--')#分别为x的显示范围为0-3,y的坐标0-1 f2=plt.subplot(1,2,2)#将figure分成一行两列,第三个数字代表的是第二个位置的图 f2.scatter(x,y_beijing,label="北京") # #2.1 添加x,y刻度 x_ticks= ["10点{}分".format(i) for i in x] y_shanghai_ticks = range(40) # #2.2 修改x,y刻度 # plt.xticks(x[::5],x_ticks[::5]) # plt.yticks(y_shanghai_ticks[::5]) f1.set_xticks(x[::5]) f1.set_yticks(y_shanghai_ticks[::5]) f1.set_xticklabels(x_ticks[::5]) f2.set_xticks(x[::5]) f2.set_yticks(y_shanghai_ticks[::5]) f2.set_xticklabels(x_ticks[::5]) # #2.3 添加网格显示 f1.grid(True , linestyle = "--",alpha = 0.6) f2.grid(True , linestyle = "--",alpha = 0.6) # #2.4 添加标签数据 # plt.xlabel("时间",fontsize=20) # plt.ylabel("温度",fontsize=20) # plt.title("某市某日10时至11时的温度变化折线图",fontsize=20) f1.set_xlabel("时间") f1.set_ylabel("温度") f1.set_title("上海市十时至十一时的温度变化",fontsize=20) f2.set_xlabel("时间") f2.set_ylabel("温度") f2.set_title("北京市十时至十一时的温度变化",fontsize=20) f1.legend(loc=0) f2.legend(loc=0) # 图像保存 plt.savefig("test.png") #3 图像显示 plt.show()
图像显示:
1.5 绘图应用
import numpy as np # 绘制一般函数的图像 # 绘制反正切函数图像 # 0 准备数据 x = np.linspace(-10,10,1000) # x为-10到10等间距取1000份 y = np.arctan(x) # 1 创建画布 plt.figure(figsize=(20,8),dpi = 100) # 2 绘制图像 plt.plot(x,y) # 2.1添加网格 plt.grid(True,linestyle = "--",alpha=0.6) # 3 显示图像 plt.show()
图像显示:
#绘制正比例函数y = x
图像显示:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。