我更喜欢使用matplotlib
OOP风格:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
Run Code Online (Sandbox Code Playgroud)
这样可以更轻松地跟踪多个图形和子图.
问题:如何使用seaborn这种方式?或者,如何将此示例更改为OOP样式?如何将seaborn
绘图函数描述为lmplot
哪个Figure
或哪个Axes
绘图?
我试图显示带有旋转的x轴标签的图表,但图表没有显示.
import seaborn as sns
%matplotlib inline
yellow='#FFB11E'
by_school=sns.barplot(x ='Organization Name',y ='Score',data = combined.sort('Organization Name'),color=yellow,ci=None)
Run Code Online (Sandbox Code Playgroud)
此时我可以看到图像,但是在我设置xticklabel之后,我再也看不到图像只是一个对象引用了.(我会张贴图片,但我没有足够的声誉:()
by_school.set_xticklabels('Organization Name',rotation=45)
<matplotlib.axes._subplots.AxesSubplot at 0x3971a6a0>
Run Code Online (Sandbox Code Playgroud)
这里发布了一个类似的问题:在seaborn factorplot中旋转标签文本, 但解决方案无效.
我有一个问题与2014年的问题基本相同(见这里).但是,我的脚本仍然会抛出错误.
这就是我所做的:我有一个带有几列的pandas数据帧.我绘制了一个简单的boxplot比较.
g = sns.boxplot(x='categories', y='oxygen', hue='target', data=df)
g.set_xticklabels(rotation=30)
Run Code Online (Sandbox Code Playgroud)
该图如下所示:
我想将x标签旋转30度.因此我使用g.set_xticklabels(rotation=30)
.但是,我收到以下错误:
set_xticklabels() missing 1 required positional argument: 'labels'
我不知道如何将matplotlib
labels
论证传递给海关sns.boxplot
.有任何想法吗?
df (Pandas DataFrame) 有两列:Date (as datetime64) 和 Amount (as float)。
我使用条形图根据时间绘制 Amount 列中的值:
sns.barplot(x="Date", y="Amount", data=df)
plt.show()
Run Code Online (Sandbox Code Playgroud)
然而,日期标签一团糟(见图)。在 Pandas 中处理这个问题的优雅方式是什么?我正在考虑从标签中删除月份和年份,或者将标签旋转 90 度。这些将如何完成,或者有更好的选择吗?谢谢你。
碰巧,有没有办法旋转下图中的 xticks(只是为了使其更具可读性)?通常
sns.xticks()
在新的 seaborn.objects 开发中不起作用(这太棒了!)
tcap.\
assign(date_time2 = tcap['date_time'].dt.date).\
groupby(['date_time2', 'person']).\
agg(counts = ('person', 'count')).\
reset_index().\
pipe(so.Plot, x = "date_time2", y = "counts", color = "person").\
add(so.Line(marker="o", edgecolor="w")).\
label(x = "Date", y = "# of messages",
color = str.capitalize,
title = "Plot 2: Volume of messages by person, by day").\
scale(color=so.Nominal(order=["lorne_a_20014", "kayla_princess94"])).\
show()
Run Code Online (Sandbox Code Playgroud)
此外,我的 x 轴是分类的,并且此警告: 使用分类单位绘制可解析为浮点数或日期的字符串列表。如果这些字符串应绘制为数字,请在绘制之前转换为适当的数据类型。出现。我尝试使用:
import warnings
warnings.filterwarnings("ignore",category=UserWarning)
Run Code Online (Sandbox Code Playgroud) 如何在没有任何统计数据的情况下在Seaborn中绘制简单的条形图?数据集只是名称和值.
import pandas
df = pandas.DataFrame({"name": ["Bob Johnson", "Mary Cramer", "Joe Ellis"], "vals": [1,2,3]})
Run Code Online (Sandbox Code Playgroud)
我想将此绘制为条形图,其中xlabels从name
列和y轴值中拉出,vals
并使x轴标签旋转45度.怎么做到呢?使用sns.barplot
像:
sns.barplot(x="name", y="vals", data=df)
Run Code Online (Sandbox Code Playgroud)
将计算此处不相关的统计数据.
我很抱歉再次问这个问题,因为我知道这之前已经被问过几次了,我已经研究了我可以在其他所有线程上找到的所有其他解决方案,但没有一个对我有用。无论我尝试什么,这些 xlabels 仍然总是水平出现并混杂在一起。我不知道为什么我的不工作而其他人工作,但我怀疑这与我在图中有三个子图有关。
我已经尝试了以下,以及许多其他的事情:
ax1.set_xticklabels(rotation=30) <-- 什么也没发生
axs[0].set_xticklabels(rotation=30) <-- 错误
plt.xticks(rotation=45) <-- 什么也没发生
这是代码和图。
customer_rev_df = pd.DataFrame(customer_rev, columns='Week Revenue Pieces Stops'.split())
print(customer_rev_df.set_index('Week'))
sns.set_style(style='whitegrid')
fig, axs = plt.subplots(ncols=3, figsize=(16, 6))
ax1 = sns.factorplot(x='Week', y='Revenue', data=customer_rev_df, ax=axs[0])
ax2 = sns.factorplot(x='Week', y='Stops', data=customer_rev_df, ax=axs[1])
ax3 = sns.factorplot(x='Week', y='Pieces', data=customer_rev_df, ax=axs[2])
axs[0].set_ylabel('Revenue')
axs[1].set_ylabel('Stops')
axs[2].set_ylabel('Pieces')
axs[0].set_title('Weekly Revenue')
axs[1].set_title('Weekly Stops')
axs[2].set_title('Weekly Pieces')
plt.tight_layout()
fig.show()
Run Code Online (Sandbox Code Playgroud)
我承认我还比较新,所以放轻松!任何帮助将不胜感激。谢谢!
seaborn ×7
python ×6
matplotlib ×5
bar-chart ×2
pandas ×2
label ×1
oop ×1
python-3.x ×1
rotation ×1
xticks ×1