小编a11*_*a11的帖子

Seaborn 散点图设置空心标记而不是填充标记

使用 Seaborn 散点图,如何将标记设置为空心圆而不是实心圆?

这是一个简单的例子:

import pandas as pd
import seaborn as sns

df = pd.DataFrame(
    {'x': [3,2,5,1,1,0],
     'y': [1,1,2,3,0,2],
     'cat': ['a','a','a','b','b','b']}
)

sns.scatterplot(data=df, x='x', y='y', hue='cat')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我尝试过以下方法但没有成功;其中大多数不会抛出错误,而是产生与上面相同的图。我认为这些不起作用,因为颜色是用hue参数设置的,但我不确定修复是什么。

sns.scatterplot(data=df, x='x', y='y', hue='cat', facecolors = 'none')
sns.scatterplot(data=df, x='x', y='y', hue='cat', facecolors = None)
sns.scatterplot(data=df, x='x', y='y', hue='cat', markerfacecolor = 'none')
sns.scatterplot(data=df, x='x', y='y', hue='cat', markerfacecolor = None)

with sns.plotting_context(rc={"markerfacecolor": None}):
    sns.scatterplot(data=df, x='x', y='y', hue='cat')
Run Code Online (Sandbox Code Playgroud)

python scatter-plot seaborn

8
推荐指数
1
解决办法
1万
查看次数

Seaborn 散点图无法使hue_order工作

我有一个 Seaborn 散点图,并试图用“hue_order”控制绘图顺序,但它没有像我预期的那样工作(我无法让蓝点显示在灰色之上)。

x = [1, 2, 3, 1, 2, 3]
cat = ['N','Y','N','N','N']
test = pd.DataFrame(list(zip(x,cat)), 
                  columns =['x','cat']
                 )
display(test)

colors = {'N': 'gray', 'Y': 'blue'}
sns.scatterplot(data=test, x='x', y='x', 
                hue='cat', hue_order=['Y', 'N', ],
                palette=colors,
               )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

翻转“hue_order”hue_order=['N', 'Y', ]不会改变绘图。如何让“Y”类别绘制在“N”类别之上?我的实际数据具有重复的 x,y 坐标,这些坐标由类别列区分。

python scatter seaborn

8
推荐指数
2
解决办法
7683
查看次数

Seaborn jointplot 关闭边缘图之一

有没有办法关闭 Seaborn Jointplot 中的顶部边缘图?

tips = sns.load_dataset('tips')
g = sns.jointplot(
    data=tips,
    x="total_bill",
    y="tip",
    hue="smoker",
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python seaborn

8
推荐指数
1
解决办法
2186
查看次数

在 R 中读取 CSV 文件并格式化日期和时间,同时读取并避免标记为的缺失值?

我正在尝试在 R 中读取 CSV 文件。如何在阅读时阅读和格式化日期和时间并避免丢失标记为 ? 的值。我读取后加载的数据应该是干净的。

我尝试过类似的方法 data <- read.csv("Data.txt") 它有效,但日期和时间保持原样。

另外,如何从特定数据范围中提取数据子集?

为此,我尝试了类似的东西

subdata <- subset(data, 
                  Date== 01/02/2007 & Date==02/02/2007, 
                  select = Date:Sub_metering_3)
Run Code Online (Sandbox Code Playgroud)

我得到错误 Error in eval(expr, envir, enclos) : object 'Date' not found

日期是第一列。

r

7
推荐指数
1
解决办法
2万
查看次数

Seaborn FacetGrid,如何在所有子图中显示 y 刻度标签

在 Seaborn FacetGrid 中,如何让 y 轴刻度标签显示在所有子图中,无论是否显示sharey=True

tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="time",  row="sex")
g.map(sns.scatterplot, "total_bill", "tip")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

以下尝试返回错误AttributeError: 'FacetGrid' object has no attribute 'flatten'

for axis in g.flatten():
    for tick in axis.get_yticklabels():
        tick.set_visible(True)
Run Code Online (Sandbox Code Playgroud)

python seaborn facet-grid

6
推荐指数
2
解决办法
4293
查看次数

如何向seaborn FacetGrid添加额外的绘图并指定颜色

有没有办法创建一个 Seaborn 线图,所有线均为灰色,平均值为红线?我正在尝试执行此操作,relplot但我不知道如何将平均值与数据分开(并且似乎未绘制平均值?)。

制作可重复的数据框

np.random.seed(1)
n1 = 100
n2 = 10
idx = np.arange(0,n1*2)
x, y, cat, id2 = [], [], [], []

x1 = list(np.random.uniform(-10,10,n2))
for i in idx: 
    x.extend(x1)
    y.extend(list(np.random.normal(loc=0, scale=0.5, size=n2)))
    cat.extend(['A', 'B'][i > n1])
    id2.append(idx[i])

id2 = id2 * n2
id2.sort()
df1 = pd.DataFrame(list(zip(id2, x, y, cat)), 
                  columns =['id2', 'x', 'y', 'cat']
                 )
Run Code Online (Sandbox Code Playgroud)

绘图尝试

g = sns.relplot(
    data=df1, x='x', y='y', hue='id2',
    col='cat', kind='line',
    palette='Greys',
    facet_kws=dict(sharey=False, 
                   sharex=False
                  ),
    legend=False
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python linear-regression seaborn facet-grid relplot

6
推荐指数
1
解决办法
3478
查看次数

熊猫合并意外产生后缀

我正在将两个 Pandas DataFrame 合并在一起,并获得“_x”和“_y”后缀。易于复制下面的示例。我尝试添加, suffixes=(False, False)到合并中,但它返回一个错误:ValueError: columns overlap but no suffix specified: Index(['f1', 'f2', 'f3'], dtype='object')。我一定在这里遗漏了一些明显的东西?我明白为什么使用 join 会发生这种情况,但我没想到它会用于合并。

请忽略复制切片错误。我想不通为什么它不扔在10号线这个错误,但它扔在第17行(如果你知道,有一个悬而未决的问题在这里就可以了!)

系统详细信息:Windows 10
conda 4.8.2
Python 3.8.3
pandas 1.0.5 py38he6e81aa_0 conda-forge

import pandas as pd

#### Build an example DataFrame for easy-to-replicate example ####
myid = [1, 1, 1, 2, 2]
myorder = [3, 2, 1, 2, 1]
y = [3642, 3640, 3632, 3628, 3608]
x = [11811, 11812, 11807, 11795, 11795]
df = pd.DataFrame(list(zip(myid, myorder, …
Run Code Online (Sandbox Code Playgroud)

merge python-3.x pandas

5
推荐指数
1
解决办法
4342
查看次数

如何向 Seaborn 分布图添加均值线和中线

有没有办法将平均值和中位数添加到 Seaborn's displot

penguins = sns.load_dataset("penguins")
g = sns.displot(
    data=penguins, x='body_mass_g',
    col='species',  
    facet_kws=dict(sharey=False, sharex=False)
)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

基于向 seaborn FacetGrid distplots 添加均值和可变性,我看到我可以定义一个FacetGrid并映射一个函数。我可以将自定义函数传递给displot吗?

尝试displot直接使用的原因是这些图开箱即用更漂亮,无需调整刻度标签大小、轴标签大小等,并且在视觉上与我制作的其他图保持一致。

def specs(x, **kwargs):
    ax = sns.histplot(x=x)
    ax.axvline(x.mean(), color='k', lw=2)
    ax.axvline(x.median(), color='k', ls='--', lw=2)

g = sns.FacetGrid(data=penguins, col='species')
g.map(specs,'body_mass_g' )
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python matplotlib histogram seaborn

5
推荐指数
1
解决办法
574
查看次数

Altair saver ValueError:不支持的格式:'png'

当我尝试在 Jupyter Notebook 中将图表保存为 PNG 时,使用 Altair saver 时不断出现错误。ValueError: Unsupported format: 'png'

我从这里知道我需要设置渲染器启用,从这里知道自述文件中有一个拼写错误,所以我在第五行代码中得到了正确的结果。

运行以下命令:
Windows 10
conda 4.8.2
Python 3.8.3
altair 4.1.0 py_1 conda-forge
altair_saver 0.1.0 py_0 conda-forge
vega 3.4.0 py38h32f6830_0 conda-forge
selenium 3.141.0 py38h9de7a3e_1001 conda-forge

import pandas as pd
import altair as alt
from altair_saver import save
alt.renderers.enable('default'); # if in jupyter, ; to suppress output
alt.renderers.enable('altair_saver', fmts=['vega-lite', 'png']);

mytaskbars = pd.DataFrame([
    {"task": "Task1a", "start": '2020-06-01', "end": '2020-09-30', "color": 'royalblue'},
    {"task": "Task1b", "start": '2020-06-01', …
Run Code Online (Sandbox Code Playgroud)

save jupyter-notebook altair

4
推荐指数
1
解决办法
7326
查看次数

Matplotlib 散点图标记类型来自字典

使用 Matplotlib 制作散点图(不是 Seaborn、Pandas 或其他高级接口),如何使用字典来指定标记类型?

此示例使用颜色字典:

x = [4, 8, 1, 0, 2]
y = [0.1, 1, 0.4, 0.8, 0.9]
name = ["A", "A", "B", "A", "B"]
df = pd.DataFrame(data=zip(x, y, name), columns=["x", "y", "name"])

colors = {"A": "red", "B": "blue"}

fig, ax = plt.subplots(1, 1)
ax.scatter(
    x=df["x"],
    y=df["y"],
    facecolors="none",
    edgecolors=df["name"].map(colors),
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但以下会引发错误TypeError: 'Series' objects are mutable, thus they cannot be hashed

markers = {"A": "v", "B": "D"}

fig, ax = plt.subplots(1, 1)
ax.scatter(
    x=df["x"],
    y=df["y"],
    facecolors="none",
    edgecolors=df["name"].map(colors), …
Run Code Online (Sandbox Code Playgroud)

scatter matplotlib

4
推荐指数
1
解决办法
1831
查看次数

Jupyter 可配置的 nbextensions 列表为空

我在我的 venv 中安装conda install -c conda-forge jupyter_nbextensions_configurator并运行jupyter nbextensions_configurator enable --user,但 nbextensions 菜单是空的。我已经重新启动笔记本几次,没有运气。如何让菜单显示出来,以便我可以单击并选择 TOC 等?

系统详情:

Windows 10, Firefox
conda 4.8.2
Python 3.8.3
jupyter 1.0.0 pypi_0 pypi
jupyter_client 6.1.3 py_0 conda-
forge jupyter_console 6.1.0 py_1 conda-
forge jupyter_contrib_core 0.1 conda-
forge jupyter_contrib.388304py3882036py3882036py382036py382036py282036206
jupyter_nbextensions_configurator 0.4.1 py38_0 conda-forge

(myenv) C:\path>jupyter nbextension list
Known nbextensions:
  config dir: C:\path\.jupyter\nbconfig
    notebook section
      nbextensions_configurator/config_menu/main enabled
      - Validating: problems found:
        - require?  X nbextensions_configurator/config_menu/main
      jupyter-js-widgets/extension disabled
      jupyter-vega/index disabled
    tree section
      nbextensions_configurator/tree_tab/main enabled
      - Validating: …
Run Code Online (Sandbox Code Playgroud)

jupyter-notebook jupyter-contrib-nbextensions

3
推荐指数
1
解决办法
2416
查看次数

如何更改 FacetGrid 中的边距标题颜色

使用 Seaborn Facet Grids,如何仅更改边距标题的颜色?请注意,这g.set_titles(color = 'red')会更改两个标题。

p = sns.load_dataset('penguins')
sns.displot(data=p, x='flipper_length_mm', 
            col='species', row='sex', 
            facet_kws=dict(margin_titles=True)
           )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib seaborn facet-grid

3
推荐指数
1
解决办法
1088
查看次数

Matplotlib如何为直方图的子图添加全局图例

如何为子图中的所有直方图添加全局图例?

下面的代码模仿了一些数据,我希望在图中的某处有一个全局图例。我正在底部思考,但会考虑更好的答案。它可以左对齐、居中或分散。

我如何添加全球图例?我尝试按照此处的fig.legend((v1, v2, v3), ('v1', 'v2', 'v3'), 'lower left')建议使用,但我认为这不适用于直方图。

使用Python 3.8

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
%matplotlib inline

v1=[3,1.1,2,5.2,4.9,2.6,3,0.5]
v2=[6.1,5.2,9.5,4.5]
v3=[0.1,1.4,0.5,1.2]

fig, axes = plt.subplots(4,2, figsize=(6.5,4.0), constrained_layout=True)
fig.suptitle('suptile')

mybins = [0,3,6,9,12]
mylist = [0,1,4,7]
for ii, ax in enumerate(axes.flat):
    if ii in mylist:
        data = [v1,v2,v3]
        colors = ['blue', 'red', 'green']
        labels = ['v1', 'v2', 'v3']
    else:
        data = [v1,v2]
        colors = ['blue', 'red']
        labels = ['v1', 'v2']
    ax.hist(data, color=colors,edgecolor='black', alpha=0.5,
            density=False, cumulative=False, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib legend subplot

1
推荐指数
1
解决办法
1万
查看次数