Python绘制散点图的教程详解
少废话,直接上代码
import matplotlib.pyplot as plt
numpy最详细教程
import numpy as np
# 1. ⾸先是导⼊包,创建数据
n = 10
x = np.random.rand(n) * 2# 随机产⽣10个0~2之间的x坐标
y = np.random.rand(n) * 2# 随机产⽣10个0~2之间的y坐标
# 2.创建⼀张figure
fig = plt.figure(1)
# 3. 设置颜⾊ color 值【可选参数,即可填可不填】,⽅式有⼏种
# colors = np.random.rand(n) # 随机产⽣10个0~1之间的颜⾊值,或者
colors = ['r', 'g', 'y', 'b', 'r', 'c', 'g', 'b', 'k', 'm']  # 可设置随机数取
# 4. 设置点的⾯积⼤⼩ area 值【可选参数】
area = 20*np.arange(1, n+1)
# 5. 设置点的边界线宽度【可选参数】
widths = np.arange(n)# 0-9的数字
# 6. 正式绘制散点图:scatter
plt.scatter(x, y, s=area, c=colors, linewidths=widths, alpha=0.5, marker='o')
# 7. 设置轴标签:xlabel、ylabel
#设置X轴标签
plt.xlabel('X坐标')
#设置Y轴标签
plt.ylabel('Y坐标')
# 8. 设置图标题:title
plt.title('test绘图函数')
# 9. 设置轴的上下限显⽰值:xlim、ylim
# 设置横轴的上下限值
plt.xlim(-0.5, 2.5)
# 设置纵轴的上下限值
plt.ylim(-0.5, 2.5)
# 10. 设置轴的刻度值:xticks、yticks
# 设置横轴精准刻度
# 设置纵轴精准刻度
# 也可按照xlim和ylim来设置
# 设置横轴精准刻度
# 设置纵轴精准刻度
# 11. 在图中某些点上(位置)显⽰标签:annotate
# plt.annotate("(" + str(round(x[2], 2)) + ", " + str(round(y[2], 2)) + ")", xy=(x[2], y[2]), fontsize=10, xycoords='data')# 或者
plt.annotate("({0},{1})".format(round(x[2],2), round(y[2],2)), xy=(x[2], y[2]), fontsize=10, xycoords='data')
# xycoords='data' 以data值为基准
# 设置字体⼤⼩为 10
# 12. 在图中某些位置显⽰⽂本:text
<(round(x[6],2), round(y[6],2), "good point", fontdict={'size': 10, 'color': 'red'})  # fontdict设置⽂本字体
# Add text to the axes.
# 13. 设置显⽰中⽂
# 14. 设置legend,【注意,'绘图测试':⼀定要是可迭代格式,例如元组或者列表,要不然只会显⽰第⼀个字符,也就是legend会显⽰不全】plt.legend(['绘图测试'], loc=2, fontsize=10)
# plt.legend(['绘图测试'], loc='upper left', markerscale = 0.5, fontsize = 10) #这个也可
# markerscale:The relative size of legend markers compared with the originally drawn ones.
# 15. 保存图⽚ savefig
plt.savefig('test_xx.png', dpi=200, bbox_inches='tight', transparent=False)
# dpi: The resolution in dots per inch,设置分辨率,⽤于改变清晰度
# If *True*, the axes patches will all be transparent
# 16. 显⽰图⽚ show
plt.show()
scatter主要参数:
def scatter(self, x, y, s=None, c=None, marker=None, cmap=None, norm=None,
vmin=None, vmax=None, alpha=None, linewidths=None,
verts=None, edgecolors=None,
**kwargs):
"""
A scatter plot of *y* vs *x* with varying marker size and/or color.
Parameters
----------
x, y : array_like, shape (n, )
The data positions.
s : scalar or array_like, shape (n, ), optional
The marker size in points**2.
Default is ``rcParams['lines.markersize'] ** 2``.
c : color, sequence, or sequence of color, optional, default: 'b'
The marker color. Possible values:
- A single color format string.
- A sequence of color specifications of length n.
- A sequence of n numbers to be mapped to colors using *cmap* and
*norm*.
- A 2-D array in which the rows are RGB or RGBA.
Note that *c* should not be a single numeric RGB or RGBA sequence
because that is indistinguishable from an array of values to be
colormapped. If you want to specify the same RGB or RGBA value for
all points, use a 2-D array with a single row.
marker : `~matplotlib.markers.MarkerStyle`, optional, default: 'o'
The marker style. *marker* can be either an instance of the class
or the text shorthand for a particular marker.
See `~matplotlib.markers` for more information marker styles.
cmap : `~lors.Colormap`, optional, default: None
A `.Colormap` instance or registered colormap name. *cmap* is only
used if *c* is an array of floats. If ``None``, defaults to rc
``ap``.
alpha : scalar, optional, default: None
The alpha blending value, between 0 (transparent) and 1 (opaque).
linewidths : scalar or array_like, optional, default: None
The linewidth of the marker edges. Note: The default *edgecolors*
is 'face'. You may want to change this as well.
If *None*, defaults to rcParams ``lines.linewidth``.
设置legend,【注意,'绘图测试’:⼀定要是可迭代格式,例如元组或者列表,要不然只会显⽰第⼀个字符,也就是legend会显⽰不全】
plt.legend(['绘图测试'], loc=2, fontsize = 10)
# plt.legend(['绘图测试'], loc='upper left', markerscale = 0.5, fontsize = 10) #这个也可
#  markerscale:The relative size of legend markers compared with the originally drawn ones.
其参数loc对应为:
运⾏结果:
补充
除了⼆维的散点图,Python还能绘制三维的散点图,下⾯的⽰例代码
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 随机种⼦
np.random.seed(1)
def randrange(n, vmin, vmax):
'''
使数据分布均匀(vmin, vmax).
'''
return (vmax - vmin)*np.random.rand(n) + vmin
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')  # 可进⾏多图绘制
n = 500
# 对于每⼀组样式和范围设置,在由x在[23,32]、y在[0,100]、
# z在[zlow,zhigh]中定义的框中绘制n个随机点
for m, zlow, zhigh in [('o', -50, -25), ('^', -30, -5)]:
xs = randrange(n, 23, 32)
ys = randrange(n, 0, 100)
zs = randrange(n, zlow, zhigh)
ax.scatter(xs, ys, zs, marker=m)  # 绘图
# X、Y、Z的标签
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
输出结果:
到此这篇关于Python绘制散点图的教程详解的⽂章就介绍到这了,更多相关Python散点图内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。