matplotlib绘制

matplotlib绘制

好久没有更新博客了,最近沉迷于画图,刚好写个博客来记录下,先给个漂亮的气泡图。
在这里插入图片描述
这个是使用matplotlib的散点图画出来的。具体的代码很简单,如下所示:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import warnings 
import random
import matplotlib as mpl
# 指定默认字体
plt.rcParams['font.sans-serif']=['SIMHEI']  
# 用来正常显示负号-
plt.rcParams['axes.unicode_minus']=False
warnings.filterwarnings('ignore')
a = np.random.randn(100)
b = np.random.randn(100)
plt.figure(figsize=(12,10))
plt.scatter(a,b,s=np.power(10*a+20*b,2),
           c=np.random.rand(100),
           cmap=mpl.cm.RdYlBu,
           marker="*")
plt.show()

#########################我是分割线######################################################
函数的具体参数如下,这是从网上抄的,关于这个参数含义的有一大堆具体是哪抄的忘记了。

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)

x,y:array_like,shape(n,)

s:标量或array_like,shape(n,),可选
    大小以点数^ 2。默认是`rcParams ['lines.markersize'] ** 2`。

c:颜色,顺序或颜色顺序,可选,默认:'b'
    `c`可以是单个颜色格式的字符串,也可以是一系列颜色
    规范的长度为`N`,或一系列`N`数字
    使用通过kwargs指定的`cmap``norm`映射到颜色
    (见下文)。请注意,`c`不应该是单个数字RGBRGBA序列,因为这与数组无法区分
    值将被彩色映射。 `c`可以是一个二维数组,其中的
    行是RGBRGBA,但是,包括单个的情况
    行为所有点指定相同的颜色。

marker:`〜matplotlib.markers.MarkerStyle`,可选,默认值:'o'
    请参阅`〜matplotlib.markers`以获取有关不同的更多信息
    标记分散支持的样式。 `marker`可以是
    该类的实例或特定文本的简写
    标记。

cmap:`〜matplotlib.colors.Colormap`,可选,默认:无
    一个`〜matplotlib.colors.Colormap`实例或注册名称。
    `cmap`仅在`c`是浮点数组时使用。如果没有,
    默认为rc`image.cmap`。

norm:`〜matplotlib.colors.Normalize`,可选,默认:无
    `〜matplotlib.colors.Normalize`实例用于缩放
    亮度数据为0,1`norm`只有在`c`是一个数组时才被使用
    彩车。如果`None',则使用默认值:func:`normalize`。

vmin,vmax:标量,可选,默认值:无
    `vmin`和`vmax`与`norm`结合使用来标准化
    亮度数据。如果其中任何一个都是`无',那么最小和最大的
    使用颜色数组。请注意,如果你通过一个“规范”实例,你的
    `vmin``vmax`的设置将被忽略。

alpha:标量,可选,默认值:无
    alpha混合值,介于0(透明)和1(不透明)之间,

linewidths:标量或array_like,可选,默认值:无
    如果无,则默认为(lines.linewidth,)。

verts:(x,y)的序列,可选
    如果`marker`为None,这些顶点将用于
    构建标记。标记的中心位于
    在(0,0)为标准化单位。整体标记重新调整
    由``s``完成。

 edgecolors :颜色或颜色顺序,可选,默认值:无
    如果无,则默认为'face'

    如果'face',边缘颜色将永远是相同的
    脸色。

    如果它是'none',补丁边界不会
    被画下来。

    对于未填充的标记,“edgecolors”kwarg
    被忽视并被迫在内部“面对”。

接着再来一张漂亮的棉棒图:

在这里插入图片描述
具体代码如下:

x = np.linspace(0.5,2*np.pi,20)
y = np.random.randn(20)
plt.figure(figsize=(10,8))
plt.stem(x,y,linefmt="-.")
for x1,y1 in zip(x,y):
    if y1>0:
        plt.text(x1,y1+0.1,np.round(y1,2),horizontalalignment='center')
    else:
        plt.text(x1,y1-0.1,np.round(y1,2),horizontalalignment='center')
plt.savefig(r'D:\360MoveData\Users\ASUS\Desktop\img\mianbang')
plt.show()


##################################分割线####################
函数及参数的解释如下:

matplotlib.pyplot.stem(x,y, linefmt=None, markerfmt=None, basefmt=None)
主要参数:
x: 棉棒的x轴基线的取值范围
y: 棉棒的长度
linefmt: 棉棒的样式,可选择{'-','--',':','-.'},根据实际需求来选择
markerfmt: 棉棒末端的样式
basefmt: 指定基线的样式
label: 图例显示内容

极线图:
在这里插入图片描述
代码如下:

bars = 12
theta = np.linspace(0,2*np.pi ,bars ,endpoint=False)
plt.figure(figsize=(10,8))
plt.polar(theta,
         c ='#FFC125',
         marker='*',
         mfc='r',
         ms=20,
)
plt.savefig(r'D:\360MoveData\Users\ASUS\Desktop\img\jixian')
plt.show()

这样一看matplotlib画出来的图还是比较漂亮的,当然还有其他比较漂亮的图形就不一 一的说明了,不过作为静态的画图的库,我感觉matplotlib做出来的图形还是没有那些动态图库秀的,比如说pyecharts库,这个库是百度的echarts的接口,画出来的图都是经过js渲染的动态图,效果相当的花里胡哨,而且将低层封装了,使得调用起来比较简单。感兴趣的可以去看看。

猜你喜欢

转载自blog.csdn.net/qq_42232193/article/details/102925070