在R中使用ggplot2
库时,我最喜欢的一个方面是能够轻松地指定美学。我可以快速地制作散点图,并应用与特定列相关联的颜色,我希望能够使用python/pandas/matplotlib来完成这一点。我想知道是否有任何方便的函数,人们使用pandas dataframes和Matplotlib将颜色Map到值?
##ggplot scatterplot example with R dataframe, `df`, colored by col3
ggplot(data = df, aes(x=col1, y=col2, color=col3)) + geom_point()
##ideal situation with pandas dataframe, 'df', where colors are chosen by col3
df.plot(x=col1,y=col2,color=col3)
编辑:谢谢你的回复,但我想包括一个样本数据框来澄清我的问题。两列包含数值数据,第三列是分类变量。我正在考虑的脚本将根据此值分配颜色。
np.random.seed(250)
df = pd.DataFrame({'Height': np.append(np.random.normal(6, 0.25, size=5), np.random.normal(5.4, 0.25, size=5)),
'Weight': np.append(np.random.normal(180, 20, size=5), np.random.normal(140, 20, size=5)),
'Gender': ["Male","Male","Male","Male","Male",
"Female","Female","Female","Female","Female"]})
Height Weight Gender
0 5.824970 159.210508 Male
1 5.780403 180.294943 Male
2 6.318295 199.142201 Male
3 5.617211 157.813278 Male
4 6.340892 191.849944 Male
5 5.625131 139.588467 Female
6 4.950479 146.711220 Female
7 5.617245 121.571890 Female
8 5.556821 141.536028 Female
9 5.714171 134.396203 Female
6条答案
按热度按时间afdcj2ne1#
导入和数据
2021年8月更新
seaborn 0.11.0
,建议使用新的图形级函数,如seaborn.relplot
,而不是直接使用FacetGrid
。2015年10月更新
Seaborn出色地处理了这个用例:
matplotlib.pyplot.scatter
Map到seaborn.FacetGrid
其立即输出:
旧答案
在这种情况下,我会直接使用matplotlib。
这给了我:
据我所知,颜色列可以是任何matplotlib兼容的颜色(RBGA元组、HTML名称、十六进制值等)。
除了数值,我在使用色彩Map表时遇到了麻烦。
lnvxswe22#
实际上你可以使用ggplot for python:
ncgqoxb03#
https://seaborn.pydata.org/generated/seaborn.scatterplot.html
xvw2m8pv4#
您可以使用plot方法的*color参数来定义每列所需的颜色。例如:
您可以使用颜色名称或颜色十六进制代码,如“#000000”表示黑色。你可以在matplotlib'swww.example中找到所有定义的颜色名称 www.example.com 。py文件在matplotlib的github仓库中。
https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/colors.py
f3temu5u5#
datetime dtype
**。pandas.DataFrame.plot
和matplotlib.pyplot.scatter
可以采用c
或color
参数,该参数必须是颜色、颜色序列或数字序列。*在
python 3.8
、pandas 1.3.1
和matplotlib 3.4.2
中测试cmap
选项。导入和测试数据
'Date'
已经是DataReader
的datetime64[ns] dtype
conda install -c anaconda pandas-datareader
或pip install pandas-datareader
,具体取决于环境。c
作为数字pandas.DataFrame.plot
df.Date.dt.month
创建pandas.Series
个月数matplotlib.pyplot.scatter
c
作为datetime dtype
pandas.DataFrame.plot
matplotlib.pyplot.scatter
wpx232ag6#
虽然不是matplotlib,但可以使用plotly express实现:
如果在notebook中创建,您将获得如下交互式输出: