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

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条)

报告相同问题?

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用