赞
踩
本文的思路很简单,就是展示几个画图的例子,你可以先看图,找到你所需要的样式,然后看代码。
import matplotlib.pyplot as plt
import numpy as np
|
|
|
|
|
|
|
|
a=np.array([[1,2,3],[2,5,0]])
figure=plt.figure(figsize=(20,8),dpi=80)
x=a[0]
y=a[1]
plt.plot(x,y,color="r",linestyle="-.")
plt.xticks(x,x)
#plt.xticks(()) # ignore xticks
plt.yticks(y,y)
plt.grid(True,linestyle="--",alpha=0.5)
plt.title("example1")
plt.xlabel("x")
plt.ylabel("y")
plt.show()
N = 50 # 点的个数
x = np.random.rand(N) # 随机产生50个0~1之间的x坐标
y = np.random.rand(N) # 随机产生50个0~1之间的y坐标
colors = np.random.rand(N) # 随机产生50个0~1之间的颜色值,每个点的颜色。
area = np.pi * (5*np.random.rand(N)+5)**2 # 点的半径范围:5~10 ,每个点所占据的面积,是随机的,你可以固定下来。
# 画散点图
plt.scatter(x, y, s=area, c=colors, alpha=0.5, marker="o")#后面4个参数都可以不写,会使用默认的。
plt.show()
a=np.random.rand(3,3)
plt.matshow(a,cmap="gist_rainbow")
plt.colorbar(fraction=0.025)
plt.show()
给定一个矩阵,生成一个矩阵图,矩阵每个位置的颜色随着值的变化而变化。
所以需要用到很多颜色,cmap作用就是将值的大小,映射到一个颜色上。
x=[172,178,180,177,175,170,168,175,176,175,170,177,184]
bins=np.arange(np.min(x),np.max(x)+1,2)
plt.hist(x,bins=bins,color="g")
绘制直方图的逻辑和通常我们想象的并不一样,一开始我没有意识到,然后就犯错了。
我想的是输入区间以及区间上的值,然后命令matplotlib
绘制。然而matplotlib
有点不同,区间仍然要输入,也就是上面的bins参数,但是区间上的值不是直接输入,而是间接输入。什么意思呢?我们只需要输入我们的数据(我这里是男生身高数据:cm)。
x=[172,178,180,177,175,170,168,175,176,175,170,177,184]
就行了,matplotlib
会按照我们上面的bins区间参数,自动帮我们统计[168,170)等各个区间的人数有多少,并且返回。也就是说,上面代码plt.hist
其实不但会输出直方图,而且还会输出帮你统计好的区间上的值。如下:
举例解释:[168,170)
有1人,[170,172)
有2人,…。
labels=["man","woman"]
x=np.arange(2)
place=["paris","london"]
number=np.array([[80,120],[90,110]])
colors=np.random.rand(2,3)#随机生成颜色
for i in range(len(place)):
plt.plot(x,number[i],color=colors[i],label=place[i])
plt.ylabel("number of people")
plt.xticks(x, labels)
plt.legend()
plt.show()
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文。
labels = ['娱乐','育儿','饮食','房贷','交通','其它']
sizes = [2,5,12,70,2,9]
explode = (0,0,0,0.1,0,0)#这个表示的是房贷那一块离开圆心多远。
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)
plt.title("饼图示例-8月份家庭支出")
plt.show()
x = [2,4,6,7,8,5,4,3]
y = [3,6,5,8,4,3,2,4]
txt = ["a","b","c","d","e","f","g","h"]
import matplotlib.pyplot as plt
plt.scatter(x, y)
for i in range(len(x)):
plt.annotate(txt[i], xy = (x[i], y[i]), xytext = (x[i]+0.1, y[i])) # 这里xy是需要标记的坐标,xytext是对应的标签坐标
plt.show()
比如绘制散点图的时候,不同类别可以绘制不同的颜色。颜色有哪些?一种方法是使用下面列出的,还有一种方法就是生成0-1之间的值,其对应了一个颜色。
'b' 蓝色
'g' 绿色
'r' 红色
'c' 青色
'm' 品红
'y' 黄色
'k' 黑色
'w' 白色
可以用在折线图中。
‘-‘:实线(solid line style)
‘--‘:虚线(dashed line style)
‘-.’:点划线(dash-dot line style)
‘:’:点线(dotted line style)
常用在散点图中
‘.’:点(point marker)
‘o’:圆形(circle marker)
‘s’:正方形(square marker)
‘*’:星型(star marker)
更多可以参考:https://matplotlib.org/stable/api/markers_api.html?highlight=marker#module-matplotlib.markers,其实就是在官方文档中搜索marker。
常用在矩阵图中,比如还有散点图也可以,每一个点都是不同的颜色,此时也可以使用这个东西。不过值得一提的是,这个东西经常和colorbar一起使用。
viridis:深紫绿黄渐变(3色)
gist_rainbow:彩虹颜色渐变,即红橙黄绿青蓝紫渐变(7色)
Greens:绿色渐变,由浅入深。(1色)
Oranges:.....(1色)
这有更多https://matplotlib.org/2.0.2/examples/color/colormaps_reference.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。