日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python繪制散點圖的教程詳解_python

作者:Vertira ? 更新時間: 2022-05-18 編程語言

少廢話,直接上代碼?

import matplotlib.pyplot as plt
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
# 設置橫軸精準刻度
plt.xticks(np.arange(np.min(x)-0.2, np.max(x)+0.2, step=0.3))
# 設置縱軸精準刻度
plt.yticks(np.arange(np.min(y)-0.2, np.max(y)+0.2, step=0.3))
# 也可按照xlim和ylim來設置
# 設置橫軸精準刻度
plt.xticks(np.arange(-0.5, 2.5, step=0.5))
# 設置縱軸精準刻度
plt.yticks(np.arange(-0.5, 2.5, step=0.5))
 
# 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
plt.text(round(x[6],2), round(y[6],2), "good point", fontdict={'size': 10, 'color': 'red'})  # fontdict設置文本字體
# Add text to the axes.
# 13. 設置顯示中文
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號
# 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 : `~matplotlib.colors.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
            ``image.cmap``.
        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()

輸出結果:

原文鏈接:https://blog.csdn.net/Vertira/article/details/123524573

欄目分類
最近更新