生信小白杨阿云 2021-03-22 19:22 采纳率: 57.1%
浏览 1498
已采纳

Python如何绘制多变量的散点图

如题,有多个变量的数据,想要在一张图上看它们各自的分布情况,有大佬可以指导一下应该怎么做吗?

我的数据结构是这样的,不同组织的不同基因都有一个score。

 

GeneID                               Adrenal.gland    Cerebellum     Brain      Fetal.brain Fetal.liver

ENSG00000000419   

ENSG00000000457

ENSG00000000460

ENSG00000000938    

ENSG00000000971    

  • 写回答

2条回答 默认 最新

  • 关注

    数值型,浮点型做散点图都可以, 给你提供几段代码, 分别是用matplotlib、seaborn和pandas-bokeh作图,  你参考下, 看哪个和你的数据结构相似,  你可以修改下:

    如果是一下子出很多图(多子图的显示), 需要进一步修改.

    matplotlib

    import numpy as np
    import pandas as pd
    import faker  # 生成模拟数据
    import matplotlib.pyplot as plt
    import warnings
    warnings.filterwarnings('ignore')  # 不提示警告
    
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    f = faker.Faker(locale='zh-CN')
    
    # 创建数据
    data = pd.DataFrame()
    for i in range(500):
        datai = pd.DataFrame({'姓名':f.name(),
                              '销售数量':f.random_int(),
                              '金额':f.random_int(),
                              '利润':f.random_int(),},
                             index=[i])      # 必须有
        data = data.append(datai)
    data.head()
    
    #方法一
    plt.scatter(x=data['销售数量'][:200],y=data['金额'][:200],s=data['利润'][:200]/100,c='red',alpha=0.5)
    plt.scatter(x=data['销售数量'][200:],y=data['金额'][200:],s=data['利润'][200:]/100,c='blue',alpha=0.5)
    plt.xlabel('销售数量')
    plt.ylabel('销售金额')
    
    方法二:
    data.plot.scatter(x='销售数量',y='金额',c='利润')

    seaborn

    import seaborn as sns
    sns.set()
    
    # 读取数据
    planets = pd.read_csv('C:/Users/yyz/Desktop/python数据分析基础/data/seaborn-data-master/planets.csv')
    planets.head()
    
    # 创建图表
    sns.scatterplot(x="distance", # x轴
                    y="orbital_period",# y轴
                    hue="year",   # 颜色分类
                    size="mass",   # 大小分类
                    palette='Spectral_r', # 调色盘
                    sizes=(10, 200),      # 大小区间
                    data=planets)

    pandas-bokeh

    # 导入工具包
    import pandas_bokeh
    import numpy as np
    import pandas as pd
    
    # 作图数据
    df = pd.read_csv('C:/Users/yyz/Desktop/pandas-bokeh/data/iris.csv')
    df.columns = ['花萼长度','花萼宽度','花瓣长度','花瓣宽度','物种']
    df['物种'].replace(['setosa','versicolor','virginica'],['山鸢尾','杂色鸢尾','维吉尼亚鸢尾'],inplace=True)
    df.head()
    
    # 修改其中的一个数值,为了查看散点大小
    df.loc[13, "花萼长度"] = 15
    
    #散点图
    p_scatter = df.plot_bokeh.scatter(
        x="花瓣长度",
        y="花萼宽度",
        size="花萼长度",# 大小
        category="物种",  # 作为分类的字段列
        title="鸢尾花卉数据集可视化")  

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备