我正在使用提示数据集,这是数据集的头部。
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) 这段代码之前可以工作,但是,在创建新环境后,它停止为该行工作
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) 我想绘制一个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) 我想垂直对齐 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)
我得到什么: …
我正在尝试为我的数据绘制趋势线。但是,我收到错误
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) 我正在使用 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作为图中三个异常值的标签:

我正在使用 matplotlib 的 Poly3DCollection 绘制一组多边形(三角形)。三角形位于顶点之间,具有与之关联的颜色。我目前正在用通过平均三个顶点的颜色确定的纯色填充每个三角形。绘制三角形以形成 3D 表面网格。
我想用所有三个顶点之间的渐变填充三角形。理想情况下,给定点的像素颜色只是基于到三个点的距离进行线性插值。例如,如果顶点是蓝色、绿色和红色,则生成的三角形应如下所示:

我认为这应该可以使用 matplotlib,但我不知道该怎么做。如果不可能,您能否建议我可以使用的另一个库或方法?谢谢你的帮助。
编辑:其他细节
它应该适用于任意数量的三角形,但可能小于 2000。颜色是任意的,尽管每个顶点只有一种颜色与之关联。多边形集合是从顶点列表创建的[x_1, y_1, z_1, x_2, y_2, z_2...]。我可以根据需要轻松更改此格式。与每个顶点关联的颜色都在一个单独的列表中,这也可以轻松更改。
时间序列数据是随时间变化的数据。我正在尝试用 python 制作时间序列数据线图的动画。在我下面的代码中,这转化为绘制xtraj它们和trangex 。但情节似乎并不奏效。
我在堆栈溢出上发现了类似的问题,但这里提供的解决方案似乎都不起作用。一些类似的问题是matplotlibAnimatedlineplotstaysempty、MatplotlibFuncAnimationnotanimatinglineplot以及引用帮助文件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) 我想在我的 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) 我有一个带有颜色条和图例的图。我想将图例放置在绘图之外的颜色栏右侧。为了实现此目的,我使用 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
matplotlib ×8
python ×8
numpy ×4
pandas ×4
seaborn ×3
python-3.x ×2
animation ×1
aspect-ratio ×1
boxplot ×1
css ×1
dtype ×1
gradient ×1
heatmap ×1
html ×1
lambda ×1
loops ×1
mesh ×1
outliers ×1
plotly-dash ×1
trendline ×1