Python – 大熊猫分散情节颜色有三个点和seaborn
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python – 大熊猫分散情节颜色有三个点和seaborn,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2324字,纯文字阅读大概需要4分钟。
内容图文
![Python – 大熊猫分散情节颜色有三个点和seaborn](/upload/InfoBanner/zyjiaocheng/824/d6428c38aa984156bcd7d90c0541691a.jpg)
使用pandas和seaborn绘制只有三个点的散点图时会出现奇怪的行为:这些点的颜色不同.当没有加载seaborn或者有超过三个点时,或者直接用matplotlib的散射方法绘图时,问题就会消失.请参阅以下示例:
from pandas import DataFrame #0.16.0
import matplotlib.pyplot as plt #1.4.3
import seaborn as sns #0.5.1
import numpy as np #1.9.2
df = DataFrame({'x': np.random.uniform(0, 1, 3), 'y': np.random.uniform(0, 1, 3)})
df.plot(kind = 'scatter', x = 'x', y = 'y')
plt.show()
df = DataFrame({'x': np.random.uniform(0, 1, 4), 'y': np.random.uniform(0, 1, 4)})
df.plot(kind = 'scatter', x = 'x', y = 'y')
plt.show()
解决方法:
我已经找到了这个bug.这个bug在技术上是在熊猫中,而不像我原先想的那样是seaborn,虽然它涉及来自pandas,seaborn和matplotlib的代码……
在pandas.tools.plotting.ScatterPlot._make_plot中,出现以下代码以选择要在散点图中使用的颜色
if c is None:
c_values = self.plt.rcParams['patch.facecolor']
elif c_is_column:
c_values = self.data[c].values
else:
c_values = c
在你的情况下,c将等于None,这是默认值,因此c_values将由plt.rcParams [‘patch.facecolor’]给出.
现在,作为自我设置的一部分,seaborn将plt.rcParams [‘patch.facecolor’]修改为(0.5725490196078431,0.77764705882352941,1.0),这是一个RGB元组.如果未使用seaborn,则值为matplotlib默认值,即’b'(表示颜色为“blue”的字符串).
然后使用c_values在ax.scatter中实际绘制图形
scatter = ax.scatter(data[x].values, data[y].values, c=c_values,
label=label, cmap=cmap, **self.kwds)
问题出现是因为关键字参数c可以接受多种不同类型的参数,它可以接受: –
>一个字符串(例如原始matplotlib案例中的’b’);
>一系列颜色规范(比如一系列RGB值);
>要映射到当前色彩映射的一系列值.
matplotlib文档明确说明了以下内容,突出了我的
c can be a single color format string, or a sequence of color specifications of length N, or a sequence of N numbers to be mapped to colors using the cmap and norm specified via kwargs (see below). Note that c should not be a single numeric RGB or RGBA sequence because that is indistinguishable from an array of values to be colormapped. c can be a 2-D array in which the rows are RGB or RGBA, however.
基本上发生的是matplotlib获取c_values值(这是三个数字的元组),然后将这些颜色映射到当前的colormap(默认情况下由pandas设置为Grays).因此,您会得到三个具有不同“灰色”的散点.当您有超过3个散点时,matplotlib假定它必须是RGB元组,因为长度与数据数组的长度不匹配(3!= 4),因此将其用作常量RBG颜色.
这已被写成大熊猫Github here的错误报告.
内容总结
以上是互联网集市为您收集整理的Python – 大熊猫分散情节颜色有三个点和seaborn全部内容,希望文章能够帮你解决Python – 大熊猫分散情节颜色有三个点和seaborn所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。