-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
BUG: Limited available colors #38247
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
38f515d
675415b
d6e919c
dde07c0
0f74d17
2430400
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,155 @@ | ||
# GH37967: Enable the use of CSS named colors, as defined in | ||
# matplotlib.colors.CSS4_COLORS, when exporting to Excel. | ||
# This data has been copied here, instead of being imported from matplotlib, | ||
# not to have ``to_excel`` methods require matplotlib. | ||
# source: matplotlib._color_data (3.3.3) | ||
CSS4_COLORS = { | ||
"aliceblue": "F0F8FF", | ||
"antiquewhite": "FAEBD7", | ||
"aqua": "00FFFF", | ||
"aquamarine": "7FFFD4", | ||
"azure": "F0FFFF", | ||
"beige": "F5F5DC", | ||
"bisque": "FFE4C4", | ||
"black": "000000", | ||
"blanchedalmond": "FFEBCD", | ||
"blue": "0000FF", | ||
"blueviolet": "8A2BE2", | ||
"brown": "A52A2A", | ||
"burlywood": "DEB887", | ||
"cadetblue": "5F9EA0", | ||
"chartreuse": "7FFF00", | ||
"chocolate": "D2691E", | ||
"coral": "FF7F50", | ||
"cornflowerblue": "6495ED", | ||
"cornsilk": "FFF8DC", | ||
"crimson": "DC143C", | ||
"cyan": "00FFFF", | ||
"darkblue": "00008B", | ||
"darkcyan": "008B8B", | ||
"darkgoldenrod": "B8860B", | ||
"darkgray": "A9A9A9", | ||
"darkgreen": "006400", | ||
"darkgrey": "A9A9A9", | ||
"darkkhaki": "BDB76B", | ||
"darkmagenta": "8B008B", | ||
"darkolivegreen": "556B2F", | ||
"darkorange": "FF8C00", | ||
"darkorchid": "9932CC", | ||
"darkred": "8B0000", | ||
"darksalmon": "E9967A", | ||
"darkseagreen": "8FBC8F", | ||
"darkslateblue": "483D8B", | ||
"darkslategray": "2F4F4F", | ||
"darkslategrey": "2F4F4F", | ||
"darkturquoise": "00CED1", | ||
"darkviolet": "9400D3", | ||
"deeppink": "FF1493", | ||
"deepskyblue": "00BFFF", | ||
"dimgray": "696969", | ||
"dimgrey": "696969", | ||
"dodgerblue": "1E90FF", | ||
"firebrick": "B22222", | ||
"floralwhite": "FFFAF0", | ||
"forestgreen": "228B22", | ||
"fuchsia": "FF00FF", | ||
"gainsboro": "DCDCDC", | ||
"ghostwhite": "F8F8FF", | ||
"gold": "FFD700", | ||
"goldenrod": "DAA520", | ||
"gray": "808080", | ||
"green": "008000", | ||
"greenyellow": "ADFF2F", | ||
"grey": "808080", | ||
"honeydew": "F0FFF0", | ||
"hotpink": "FF69B4", | ||
"indianred": "CD5C5C", | ||
"indigo": "4B0082", | ||
"ivory": "FFFFF0", | ||
"khaki": "F0E68C", | ||
"lavender": "E6E6FA", | ||
"lavenderblush": "FFF0F5", | ||
"lawngreen": "7CFC00", | ||
"lemonchiffon": "FFFACD", | ||
"lightblue": "ADD8E6", | ||
"lightcoral": "F08080", | ||
"lightcyan": "E0FFFF", | ||
"lightgoldenrodyellow": "FAFAD2", | ||
"lightgray": "D3D3D3", | ||
"lightgreen": "90EE90", | ||
"lightgrey": "D3D3D3", | ||
"lightpink": "FFB6C1", | ||
"lightsalmon": "FFA07A", | ||
"lightseagreen": "20B2AA", | ||
"lightskyblue": "87CEFA", | ||
"lightslategray": "778899", | ||
"lightslategrey": "778899", | ||
"lightsteelblue": "B0C4DE", | ||
"lightyellow": "FFFFE0", | ||
"lime": "00FF00", | ||
"limegreen": "32CD32", | ||
"linen": "FAF0E6", | ||
"magenta": "FF00FF", | ||
"maroon": "800000", | ||
"mediumaquamarine": "66CDAA", | ||
"mediumblue": "0000CD", | ||
"mediumorchid": "BA55D3", | ||
"mediumpurple": "9370DB", | ||
"mediumseagreen": "3CB371", | ||
"mediumslateblue": "7B68EE", | ||
"mediumspringgreen": "00FA9A", | ||
"mediumturquoise": "48D1CC", | ||
"mediumvioletred": "C71585", | ||
"midnightblue": "191970", | ||
"mintcream": "F5FFFA", | ||
"mistyrose": "FFE4E1", | ||
"moccasin": "FFE4B5", | ||
"navajowhite": "FFDEAD", | ||
"navy": "000080", | ||
"oldlace": "FDF5E6", | ||
"olive": "808000", | ||
"olivedrab": "6B8E23", | ||
"orange": "FFA500", | ||
"orangered": "FF4500", | ||
"orchid": "DA70D6", | ||
"palegoldenrod": "EEE8AA", | ||
"palegreen": "98FB98", | ||
"paleturquoise": "AFEEEE", | ||
"palevioletred": "DB7093", | ||
"papayawhip": "FFEFD5", | ||
"peachpuff": "FFDAB9", | ||
"peru": "CD853F", | ||
"pink": "FFC0CB", | ||
"plum": "DDA0DD", | ||
"powderblue": "B0E0E6", | ||
"purple": "800080", | ||
"rebeccapurple": "663399", | ||
"red": "FF0000", | ||
"rosybrown": "BC8F8F", | ||
"royalblue": "4169E1", | ||
"saddlebrown": "8B4513", | ||
"salmon": "FA8072", | ||
"sandybrown": "F4A460", | ||
"seagreen": "2E8B57", | ||
"seashell": "FFF5EE", | ||
"sienna": "A0522D", | ||
"silver": "C0C0C0", | ||
"skyblue": "87CEEB", | ||
"slateblue": "6A5ACD", | ||
"slategray": "708090", | ||
"slategrey": "708090", | ||
"snow": "FFFAFA", | ||
"springgreen": "00FF7F", | ||
"steelblue": "4682B4", | ||
"tan": "D2B48C", | ||
"teal": "008080", | ||
"thistle": "D8BFD8", | ||
"tomato": "FF6347", | ||
"turquoise": "40E0D0", | ||
"violet": "EE82EE", | ||
"wheat": "F5DEB3", | ||
"white": "FFFFFF", | ||
"whitesmoke": "F5F5F5", | ||
"yellow": "FFFF00", | ||
"yellowgreen": "9ACD32", | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,9 +2,12 @@ | |
|
||
ExcelFormatter is tested implicitly in pandas/tests/io/excel | ||
""" | ||
import string | ||
|
||
import pytest | ||
|
||
import pandas.util._test_decorators as td | ||
|
||
import pandas._testing as tm | ||
|
||
from pandas.io.formats.css import CSSWarning | ||
|
@@ -313,3 +316,18 @@ def test_css_to_excel_bad_colors(input_color): | |
with tm.assert_produces_warning(CSSWarning): | ||
convert = CSSToExcelConverter() | ||
assert expected == convert(css) | ||
|
||
|
||
def tests_css_named_colors_valid(): | ||
upper_hexs = set(map(str.upper, string.hexdigits)) | ||
for color in CSSToExcelConverter.NAMED_COLORS.values(): | ||
assert len(color) == 6 and all(c in upper_hexs for c in color) | ||
Comment on lines
+321
to
+324
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would you consider adding a test that all colors from There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, I wondered a bit about that, but didn't make my mind. |
||
|
||
|
||
@td.skip_if_no_mpl | ||
def test_css_named_colors_from_mpl_present(): | ||
from matplotlib.colors import CSS4_COLORS as mpl_colors | ||
|
||
pd_colors = CSSToExcelConverter.NAMED_COLORS | ||
for name, color in mpl_colors.items(): | ||
assert name in pd_colors and pd_colors[name] == color[1:] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you add some more commentary here, why we need this and we don't want to depend on using mpl for this data.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks. Do we have any need for this in plotting itself? @ivanovmg @charlesdong1991 @jorisvandenbossche