小编Zep*_*hyr的帖子

Seaborn violinplot 中 HUE 参数的多列

我正在使用提示数据集,这是数据集的头部。


 total_bill tip     sex    smoker day time  size
0   16.99   1.01    Female  No  Sun Dinner  2
1   10.34   1.66    Male    No  Sun Dinner  3
2   21.01   3.50    Male    No  Sun Dinner  3
3   23.68   3.31    Male    No  Sun Dinner  2
4   24.59   3.61    Female  No  Sun Dinner  4
Run Code Online (Sandbox Code Playgroud)

我的代码是


 total_bill tip     sex    smoker day time  size
0   16.99   1.01    Female  No  Sun Dinner  2
1   10.34   1.66    Male    No  Sun Dinner  3
2   21.01   3.50    Male    No  Sun Dinner  3 …
Run Code Online (Sandbox Code Playgroud)

python visualization matplotlib pandas seaborn

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

ValueError: FixedLocator 位置的数量 (5),通常来自调用 set_ticks,与刻度标签的数量不匹配 (12)

这段代码之前可以工作,但是,在创建新环境后,它停止为该行工作

plt.xticks(x, months, rotation=25,fontsize=8)
Run Code Online (Sandbox Code Playgroud)

如果我注释此行,则没有错误,放置此行后会抛出错误

ValueError: The number of FixedLocator locations (5), usually from a call to set_ticks, does not match the number of ticklabels (12).
Run Code Online (Sandbox Code Playgroud)
import numpy as np
import matplotlib.pyplot as plt

dataset = df
dfsize = dataset[df.columns[0]].size
x = []
for i in range(dfsize):
    x.append(i)

dataset.shape
# dataset.dropna(inplace=True)
dataset.columns.values
var = ""
for i in range(dataset.shape[1]):  ## 1 is for column, dataset.shape[1] calculate length of col

    y = dataset[dataset.columns[i]].values
    y = y.astype(float)
    y = y.reshape(-1, 1)
    y.shape …
Run Code Online (Sandbox Code Playgroud)

numpy matplotlib python-3.x pandas

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

seaborn 热图注释 ValueError:类型为“numpy.str_”的对象的未知格式代码“g”

我想绘制一个seaborn.heatmap并仅注释一些行/列。
所有单元格都有注释的示例:

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np


n1 = 5
n2 = 10
M = np.random.random((n1, n2))   

fig, ax = plt.subplots()

sns.heatmap(ax = ax, data = M, annot = True)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

按照这些示例添加值注释段落),可以将seaborn.heatmap每个单元格的注释作为annot参数传递给数组:

annot :布尔或矩形数据集,可选
如果为 True,则在每个单元格中写入数据值。如果是与数据具有相同形状的类似数组,则使用它来注释热图而不是数据。请注意,DataFrame 将匹配位置,而不是索引。

如果我尝试生成一个数组str并将其作为annot参数传递给,seaborn.heatmap我会收到以下错误:

Traceback (most recent call last):
  File "C:/.../myfile.py", line 16, in <module>
    sns.heatmap(ax = ax, data = M, annot …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib heatmap seaborn

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

Plotly Dash:dcc.RadioItems 垂直对齐

我想垂直对齐 a 的所有选项dash_core_components.RadioItems
根据dash 文档,默认行为应包括选项的垂直对齐RadioItems。如果您想水平对齐选项,则必须指定:

labelStyle={'display': 'inline-block'}
Run Code Online (Sandbox Code Playgroud)

相反,作为默认行为,我得到水平对齐,但我不知道要指定什么作为项目display来获得选项的垂直对齐RadioItems
这是我到目前为止的尝试:

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

app = dash.Dash()

app.layout = html.Div([dcc.RadioItems(id = 'input-radio-button',
                                      options = [dict(label = 'A', value = 'A'),
                                                 dict(label = 'B', value = 'B')],
                                      value = 'A'),
                       html.P(id = 'output-text')])


@app.callback(Output('output-text', 'children'),
              [Input('input-radio-button', 'value')])
def update_graph(value):
    return f'The selected value is {value}'


if __name__ == "__main__":
    app.run_server()
Run Code Online (Sandbox Code Playgroud)

我得到什么: …

html css python plotly-dash

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

为什么我收到“ValueError:数据类型 &lt;class 'numpy.object_'&gt; 不精确。” 使用polyfit函数时?

我正在尝试为我的数据绘制趋势线。但是,我收到错误

ValueError: data type <class 'numpy.object_'> not inexact.  
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么吗?

我的数据框是 Us_corr3;

在此输入图像描述
这是我的代码:

data5 = Us_corr3[['US GDP', 'US Unemployment']]

x = data5['US GDP']

y = data5['US Unemployment']

plt.scatter(x, y)


z = np.polyfit(x, y, 1)

p = np.poly1d(z)

plt.plot(x,p(x),"r--")

plt.show()
Run Code Online (Sandbox Code Playgroud)

它说;

ValueError: data type <class 'numpy.object_'> not inexact.
Run Code Online (Sandbox Code Playgroud)

numpy matplotlib pandas trendline dtype

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

Boxplot:异常值标签 Python

我正在使用 seaborn 包制作时间序列箱线图,但我无法在异常值上贴上标签。

我的数据是一个 3 列的数据框:[Month , Id , Value]我们可以像这样伪造:

### Sample Data ###
Month = numpy.repeat(numpy.arange(1,11),10)
Id = numpy.arange(1,101)
Value = numpy.random.randn(100)

### As a pandas DataFrame ###
Ts = pandas.DataFrame({'Value' : Value,'Month':Month, 'Id': Id})

### Time series boxplot ###
ax = seaborn.boxplot(x="Month",y="Value",data=Ts)
Run Code Online (Sandbox Code Playgroud)

我每个月都有一个箱线图,我试图将其Id作为图中三个异常值的标签:
1

python matplotlib outliers boxplot seaborn

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

用顶点之间的渐变填充 matplotlib 多边形

我正在使用 matplotlib 的 Poly3DCollection 绘制一组多边形(三角形)。三角形位于顶点之间,具有与之关联的颜色。我目前正在用通过平均三个顶点的颜色确定的纯色填充每个三角形。绘制三角形以形成 3D 表面网格。

我想用所有三个顶点之间的渐变填充三角形。理想情况下,给定点的像素颜色只是基于到三个点的距离进行线性插值。例如,如果顶点是蓝色、绿色和红色,则生成的三角形应如下所示:
在此处输入图片说明

我认为这应该可以使用 matplotlib,但我不知道该怎么做。如果不可能,您能否建议我可以使用的另一个库或方法?谢谢你的帮助。

编辑:其他细节

它应该适用于任意数量的三角形,但可能小于 2000。颜色是任意的,尽管每个顶点只有一种颜色与之关联。多边形集合是从顶点列表创建的[x_1, y_1, z_1, x_2, y_2, z_2...]。我可以根据需要轻松更改此格式。与每个顶点关联的颜色都在一个单独的列表中,这也可以轻松更改。

python gradient mesh matplotlib

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

随着时间的推移绘制线图动画

时间序列数据是随时间变化的数据。我正在尝试用 python 制作时间序列数据线图的动画。在我下面的代码中,这转化为绘制xtraj它们和trangex 。但情节似乎并不奏效。

我在堆栈溢出上发现了类似的问题,但这里提供的解决方案似乎都不起作用。一些类似的问题是matplotlibAnimatedlineplotstaysemptyMatplotlibFuncAnimationnotanimatinglineplot以及引用帮助文件AnimationswithMatplotlib 的教程。

我首先使用第一部分创建数据并使用第二部分对其进行模拟。我尝试重命名将用作 y 值和 x 值的数据,以便更容易阅读。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation


dt = 0.01
tfinal = 5.0
x0 = 0


sqrtdt = np.sqrt(dt)
n = int(tfinal/dt)
xtraj = np.zeros(n+1, float)
trange = np.linspace(start=0,stop=tfinal ,num=n+1) 
xtraj[0] = x0

for i in range(n):
    xtraj[i+1] = xtraj[i] + np.random.normal() 

x = trange
y = xtraj

# animation line plot example

fig = …
Run Code Online (Sandbox Code Playgroud)

python animation visualization numpy matplotlib

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

使用循环或 lambda 在多个数据框中添加具有相同字符串值的列的更有效方法?

我想在我的 8 个类似数据框中的每一个中添加一个新列 Category。此列中的值相同,它们也是 df 名称,如df1_p8本例中所示。我用过了:

In:     df61_p8.insert(3,"Category","df61_p8", True)
# or simply, df61_p8['Category']='df61_p8'

Out:
        code    violation_description                                            Category
89491   9-1-503 Defective or obstructed duct system one- building                df61_p8
102045  9-1-503 Defective or obstructed duct system one- building                df61_p8
103369  9-1-503 Defective or obstructed duct system one- building                df61_p8
130440  9-1-502 Failure to maintain at least one (1) elevator                    df61_p8
132446  9-1-503 Defective or obstructed duct system one-  building               df61_p8
Run Code Online (Sandbox Code Playgroud)

最终,我想将这 8 个数据帧附加/连接到一个数据帧中。

我想知道是否有更有效的方法来做到这一点,而不是在每个数据帧上一一使用 .insert 。像循环或 lambdas 之类的东西..作为初学者,我不确定如何在我的情况下应用它们?谢谢你。

append_alldfs = …
Run Code Online (Sandbox Code Playgroud)

python lambda loops python-3.x pandas

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

如何使用ight_layout 保持轴纵横比

我有一个带有颜色条和图例的图。我想将图例放置在绘图之外的颜色栏右侧。为了实现此目的,我使用 bbox_to_anchor 参数,但这会导致图例被截断:

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm

_, ax = plt.subplots()

extent = np.r_[0, 1, 0, 1]
space = np.linspace(0, 1)
probs = np.array([[norm.cdf(x + y) for x in space] for y in space])
colormap = ax.imshow(probs, aspect="auto", origin="lower", extent=extent, alpha=0.5)
colorbar = plt.colorbar(colormap, ax=ax)
colorbar.set_label(f"Probability")
ax.scatter(
    [0.2, 0.4, 0.6], [0.8, 0.6, 0.4], color="r", label="Labeled Points",
)
plt.legend(loc="center left", bbox_to_anchor=(1.3, 0.5))
plt.title
plt.show()
Run Code Online (Sandbox Code Playgroud)

图例被切断

图例被切断

为了修复图例,我在 plt.show() 之前插入对 plt.tight_layout() 的调用,但这会导致纵横比扭曲:

纵横比扭曲的绘图

纵横比扭曲的绘图

如何显示整个图例并保留轴的纵横比?

python visualization data-visualization matplotlib aspect-ratio

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