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

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="鸢尾花卉数据集可视化")  

     

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 最好是能提供下数据的部分, 知道数据都是什么格式的(数值还是字符串)

    python中可以作图的工具包很多 . 静态的: matplotlib, seaborn, 动态的: pandas-bokeh, pyechart等

    散点图不难, 重点看数据

    供参考: 

    https://www.bilibili.com/video/BV1DV411Y7nQ/

    https://www.bilibili.com/video/BV1Hf4y1t73D/

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题